목록프로그래머스 (167)
안녕하세요
시소 짝꿍 (30) 문제 보기 탑승한 사람의 무게와 시소 축과 좌석 간의 거리의 곱이 양쪽 다 같다면 시소 짝꿍이라고 할 수 있습니다. 사람들의 몸무게 목록 weights이 주어질 때, 시소 짝꿍이 몇 쌍 존재하는지 구하여 return 하도록 solution 함수를 완성해주세요. 문제 풀이 function solution(weights) { weights.sort((a, b) => a - b); const weightCounts = {}; const units = [1, 2 / 3, 2 / 4, 3 / 4]; let count = 0; for (let weight of weights) { for (let unit of units) { if (weightCounts[weight * unit]) { coun..
마법의 엘리베이터(*) 문제 보기 -1, +1, -10, +10, -100, +100 등과 같이 절댓값이 10c (c ≥ 0 인 정수) 형태인 정수들이 적힌 버튼 엘리베이터가 위치해 있는 층과 버튼의 값을 더한 결과가 0보다 작으면 엘리베이터는 움직이지 않습니다. 0층으로 가기 위해 최소한으로 버튼 누르는 횟수는? 문제 풀이 n의 자릿수를 가장 빠르게 0으로 만드는 방법은? 올려주는 경우에는 다음 자릿수가 +1이 된다. n=1일 경우 1~5의 경우에는 내려주는게 빠르다. 6보다 큰 경우에는 올려주는게 빠르다. 그런데 올라가는 것이 다음 자릿수들에 영향을 줄 때를 생각해야 한다. 99인 경우 1의 자리를 1 올려주었지만 10의 자리와 100의 자리가 함께 영향을 받았다. 올려줄 경우에는 자릿수 변경에 신경..
호텔 대실 (20) 문제 보기 문제 조건 목표: 대실이 가장 많을 때 몇 개의 방이 예약되어 있는지를 구해야 한다. 최소한의 객실만 사용한다. 한 번 사용한 객실은 퇴실 시간을 기준으로 10분 청소시간이 필요하다. 문제 풀이 1. 3600개의 0을 지닌 배열을 만든다. 2. [시작시간, 퇴실시간 + 10]을 구한다. 3. for문으로 (시작시간)~(퇴실시간+10) 구간의 요소에 +1 해준다. 4. 최대 값을 Math.max()로 찾는다. 코드 function getMinute(time) { const [hour, min] = time.split(":"); return hour * 60 + Number(min); } function solution(book_time) { const timeTable = A..
무인도 여행 (25) 문제 보기 문제 조건 // X는 바다 // 숫자는 식량 // 상하좌우 연결되면 하나의 섬 // 섬 별로 숫자의 합을 오름차순으로 반환 // 방문할 섬 없으면 -1 반환 문제 풀이 function solution(maps) { maps = maps.map((map) => map.split("")); // 이차원 배열로 만들기 const row = maps.length; const column = maps[0].length; const directions = [ [-1, 0], [1, 0], [0, -1], [0, 1], ]; const answer = []; const queue = []; for (let i = 0; i < row; i++) { for (let j = 0; j < c..