문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 풀이‘무슨 기준으로 정렬을 해야할까?’를 고민했다. 앞자리에 있는 수가 클수록 먼저 배치해야하는 것은 쉽게 알 수 있었다. 생각해봐야할 케이스는 34와 341 같은 경우이다. 둘 중에 무엇을 먼저 앞에 놓아야할까? 34134와 34341을 비교하면 34를 먼저 배치했을 때가 더 숫자가 컸다. 즉, 마지막 자리의 숫자가 더 큰 것이 먼저 배치가 되면 된다. 그래서 두 숫자를 비교할 때 각 숫자의 index를 설정하고, 맨 앞자리..
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1. 풀이1번 수포자는 1,2,3,4,5번을 계속 반복하면서 찍고,2번 수포자는 2,1,2,3,2,4,2,5번을 반복하면서 찍고,3번 수포자는 3,3,1,1,2,2,4,4,5,5번을 반복하면서 찍는다. 수포자들이 찍은 번호들을 각각 배열로 선언하고, 수포자들이 맞춘 문제 개수들도 변수로 선언한다. answers 배열을 순회하면서 해당 배열이 가리키는 index를 각각 5, 8, 10으로 나눈 값을각 수포자가 찍은 번호 배열의 inde..
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/129091. 문제를 보고 든 생각‘(’이 먼저 나오고, 그리고 나중에 ‘)’으로 이 괄호가 닫혀야한다.그렇다면, 알 수 있는 사실은‘)’이 먼저 나오면 안된다.‘(’의 개수와 ‘)’의 개수는 같아야한다.그렇다면 0으로 시작하는 변수를 두고, ‘(’이 나오면 1을 더해주고, ‘)’이 나오면 1을 빼주면 될 것 같다.‘)’이 먼저 나오면 안된다고 했다. → 이 경우는 해당 변수가 음수가 되는 경우이므로 음수가 되면 바로 false를 return 해주면 될 것 같다. 2. 풀이function solution(s){ let count = 0; for(let ind..
프로그래머스의 코딩테스트 문제 → 알고리즘 고득점 Kit → 이분탐색 카테고리에서 풀었다.이분탐색이라는 카테고리 안에 있는 문제인 것은 알았지만, 도대체 왜 이 문제가 이분탐색을 활용해야하는지 이해하지 못하고 삽질만 계속하다가 다른 분들의 풀이를 보고 겨우겨우 풀 수 있었다. 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/43238풀이우리가 구해야하는 것은 ‘모든 사람이 심사를 받는데 걸리는 시간의 최솟값’이다.n은 입국심사를 기다리는 사람 수이며, 배열 times에는 각 심사관이 한 명을 심사하는데 걸리는 시간이 담겨있다. 만약 ‘모든 사람이 심사를 받는데 걸리는 시간의 최솟값’을 안다면(answer라고 하자),심사관 A가 한 명을 ..
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr1. 나의 코드function solution(sizes) { var arr1 = []; var arr2 = []; for(let card of sizes) { if(card[0] arr1 배열과 arr2 배열을 생성한다.sizes 배열을 순회한다.가로 길이가 세로 길이보다 작다면 둘을 뒤바꾼다.arr1에 가로 길이를, arr2에 세로 길이를 push한다..
문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr1. 나의 풀이function solution(array, commands) { var answer = []; for(let arr of commands) { var newArr = []; for(let i = arr[0]; i a-b); answer.push(newArr[arr[2] - 1]); } ..
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/428851. 나의 풀이function solution(people, limit) { var sortedPeople = people.sort((a,b) => a-b); let cnt = 0; var i = 0; var j = sortedPeople.length - 1; while(i people 배열을 정렬한, sortedPeople 배열을 생성한다.포인터 두 개를 생성한다. (i는 0, j는 sortedPeople의 맨 끝에)i가 j보다 작거나 같을 동안 계속 순회를 하면서배열에서 가장 큰 값과 작은 값을 더한 값이 limit보다 작거나 같으면 i..
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr1. 나의 풀이function solution(n, lost, reserve) { // 배열 정렬 lost.sort((a, b) => a - b); reserve.sort((a, b) => a - b); let lost_cnt = lost.length; for (let i = lost.length - 1; i >= 0; i--) { ..
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/425861. 나의 풀이처음에 문제를 읽을 때는 조금 막막했었다. 도대체 뭘 하라는거지?progressses 배열과 speeds 배열이 있다.뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수는 있는데그러면 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 같이 배포된다.그래서 나는 어떻게 했냐면,100에서 progesses를 뺀 left_progresses 변수를 만들었다.left_progresses를 speeds로 나눈 값(이 때 올림을 해야한다(ceil 사용))을 새로운 배열에 push 한다.값들이 들어간 배열(days)를 순회하는데 가장 앞에 있는 index의 값을 변수 standar..
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12906 1. 자바스크립트에는 스택이 없나?스택을 활용해서 푸는 문제 같았고, 만약 C++로 문제를 풀었다면 STL stack을 활용해서 금방 풀 수 있을 것 같았다.하지만 자바스크립트에도 스택이 있나? 검색해보니 배열을 활용해서 스택을 직접 구현하는 방법들이 많이 나왔다. 근데 그러지말고 바로 배열을 쓰면 될 것 같아 배열을 사용했다.2. 하지만 자바스크랩트 배열에는 top이 없다.하지만 문제를 통과하지 못했다. 왜냐하면 내가 무의식적으로 top을 활용했는데, 자바스크립트의 배열에 .top을 붙여봤자 아무 일도 일어나지 않기 때문이다.top 대신 ‘배열.length - 1’을 넣으면 어..