programmers
Programmers / Level 2 / 호텔 대실 / JS
문제 간단설명예약한 [대실 시작 시각, 대실 종료 시각] 의 배열이 담겨있는 2차원 배열이 주어진다.한 방이 사용중이라면, 퇴실 시간 이후에 10분의 청소 시간을 가진 후에 다른 사람이 사용할 수 있다.이럴 경우 최소 몇 개의 방이 있어야 모든 예약을 받을 수 있는지 반환하는 문제이다. 제한 사항1 book_time[i]는 ["HH:MM", "HH:MM"]의 형태로 이루어진 배열[대실 시작 시각, 대실 종료 시각]을 나타냄시각은 HH:MM의 형태로 24시간 표기법을 따르며, "00:00"부터 "23:59" 까지로 주어짐예약 시각이 자정을 넘어가는 경우는 없음시작 시각은 항상 종료 시각보다 빠름 성공 코드function solution(book_time) { /** * 시간 문자열을 분으로 바꿔주는 ..
Programmers / Level 2 / 쿼드압축 후 개수 세기 / JS
문제 간단설명0과 1로만 이루어진 2차원 배열 arr가 주어진다.특정 영역내에 모두 0 또는 1로 되어있다면 하나로 압축한다.그렇지 않다면, 4개의 균일한 정사각형 영역으로 쪼갠 뒤, 위와 같이 압축한다.위 과정을 끝까지 반복했을 시에 0과 1의 개수가 몇개인지 반환하는 문제이다. 제한 사항arr의 행의 개수는 1이상 1024 이하이며, 2의 거듭 제곱수 형태를 하고 있습니다.arr는 정사각형 배열이다.arr의 각 행에 있는 모든 값은 0 또는 1이다. 성공 코드function solution(arr) { let zeroCount = 0; let oneCount = 0; /** * 영역내에 인자로 받은 number와 모두 같은 값인지 판단하는 함수이다. * * @param {number}..
Programmers / Level 2 / 2개 이하로 다른 비트 / JS
문제 간단설명x가 주어지면 x보다 크고 x와 비트가 1~2개 다른 수들 중에서 제일 작은 수를 반환하면 된다. 제한 사항1 0 실패 코드 (10번, 11번 테스트케이스 실패)function solution(numbers) { const f = (n) => { if (n % 2 === 0) { return n + 1; } let bit = 1; // 가장 가까운 0을 찾는 반복문이다. while ((n & bit) !== 0) { // bit를 왼쪽으로 한 칸씩 이동시킨다. bit > 1); }; const result = numbers.map((n) => f(n)); return result;} 전체적인 로직은 틀리지 않았다. 다만 총 11개..
Programmers / Level 2 / 롤케이크 자르기 / JS
문제 간단설명철수와 동생은 롤케이크를 두조각으로 나눠 먹으려고 한다.위에 토핑이 올려져 있는데, 둘로 같게 나누는 기준은 토핑 종류의 개수이다.위에 올라가 있는 토핑 리스트가 주어질 때, 토핑 종류의 개수가 같을 수 있게 나누는 방법이 몇개인지 반환하면 된다. 제한 사항1 1 실패 코드 (시간 초과)function solution(topping) { let result = 0; for(let i=0; i 토핑이 몇개인지 상관없이 '토핑 종류의 개수'만 중요하므로 set 자료구조를 사용했다.단순히 slice로 케이크를 나누고, 각 set에 집어넣어서 size를 구하면 토핑 종류의 개수가 나온다.그렇게 양쪽 케이크의 토핑 종류의 개수가 같다면 반환값을 하나 더해주었다. 일단 for 반복문..
Programmers / Level 2 / 뒤에 있는 큰 수 찾기 / JS
문제 간단설명정수로 이루어진 배열 numbers가 있다.각 수에 대해서 가장 가깝고 자신보다 큰 수를 '뒷 수'라고 한다.각 요소에 대해 '뒷 수'들을 모아서 배열로 반환하면 된다.만약 뒷 수가 존재하지 않는다면 -1을 반환하면 된다. 제한 사항4 1 실패 코드 (시간 초과)function solution(numbers) { const result = []; for(let i=0; i cur) { backNumber = next; break; } } result.push(backNumber); } return result;} 최악의 경우에 O(n^2..
Programmers / Level 3 / 베스트앨범 / JS
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr const infoObj = {}; const playOfGenre = {}; let result = []; function solution(genres, plays) { const length = genres.length; /** * 곡별 정보들을 객체로 만드는 함수 */ const getInfo = () => { for (let i = 0; i < length; i++) { const genre = genres[i]; const play = plays[i]; infoObj[i] = {..