Level 2
Programmers / Level 2 / 가장 큰 수 / JS
https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이function solution(numbers) { const result = numbers .map(String) .sort((a, b) => (b + a).localeCompare(a + b)) .join(''); return result[0] === '0' ? '0' : result;}풀이는 정말 간단하고, 특히 sort 부분에는 정말 다양한 풀이가 있다.하지만, 여기서는 localeCompare를 사용했는데, 그 이유는 다..
Programmers / Level 2 / 양궁대회 / JS
https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 분석이 문제는 고려할 것이 많기 때문에, 문제를 잘 읽어야 헷갈리지 않고 풀 수 있다.더 많이 맞춘쪽이 해당 점수를 가져간다.여러발 맞춰도 맞춘만큼 가져가는 것이 아닌, 해당 점수 한 번만 가져간다.똑같이 맞췄다면 어피치가 해당 점수를 가져간다.'최대 점수'가 아닌, '최대 점수 차이'를 가지는 결과를 구해야 한다.'최대 점수 차이'를 가지는 방법이 여러개라면, 낮은 점수를 많이 맞춘 방법을 반환한다.위에 보라색으로 된 것을 놓치거나, 헷갈릴 수 ..

Programmers / Level 2 / 전력망을 둘로 나누기 / JS
https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이/** * 인접리스트를 초기화하는 함수이다. * * @param {number[][]} wires 전선 정보 * @returns {Map>} 인접리스트 */function initAdjList(wires) { const adjList = new Map(); wires.forEach(([tower1, tower2]) => { if (adjList.has(tower1)) { adjList.get(tower1).add(tower2); ..
Programmers / Level 2 / 우박수열 정적분 / JS
문제 간단설명우박수열은 1을 만들기 위해 다음과 같은 단계를 거칩니다.1-1. 입력된 수가 짝수라면 2로 나눕니다.1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.2. 결과로 나온 수가 1보다 크다면 위 작업을 반복합니다. 은지는 우박수열을 좌표 평면 위에 꺾은선 그래프로 나타내보려고 합니다.초항이 k인 우박수열이 있다면, x = 0일때 y = k이고,다음 우박수는 x = 1에 표시합니다. 이렇게 만든 꺾은선 그래프를 정적분 하려고 합니다.x에 대한 범위 [a, b]가 주어진다면,처음부터 a만큼, 끝에서 b만큼 좌표사이의 넓이를 구하면 됩니다. 예를 들어,좌표가 6개 주어졌고,[a, b]가 [1, -2]라면,x = 1부터 x = 5(배열은 0부터 시작하므로 6은 5번째이다)에서 2를 뺀 3까지의..
Programmers / Level 2 / 리코쳇 로봇 / JS
문제 간단설명시작 위치에서 목표 위치까지 최소 몇 번만에 도달할 수 있는지 말하는 게임이다. 말은 상, 하, 좌, 우 4방향 중 한 방향으로만 움직일 수 있으며, 게임판 맨 끝이나 장애물에 부딪힐 때까지 미끄러져 이동하는 것을 한 번의 이동으로 한다.'.' : 빈 공간'R' : 로봇의 처음 위치'D' : 장애물의 위치'G' : 목표지점 게임판은 위 4가지로 구성되어 있으며, 최소 몇 번을 이동해야 하는지 반환하면 된다. 만약 도달할 수 없다면 -1을 반환하면 된다. 제한 사항3 3 board의 원소의 길이는 모두 동일하다.'R'과 'G'는 한 번씩 등장한다. 성공 코드function solution(board) { const dr = [-1, 1, 0, 0]; const dc = [0, 0, -1, ..
Programmers / Level 2 / 테이블 해시 함수 / JS
문제 간단설명다음과 같은 과정을 거쳐서 해시값을 반환하면 된다.테이블의 튜플을 col 번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, 만약 그 값이 동일하면 기본키의 첫 번째 컬럼의 값을 기준으로 내림차순 정렬합니다.정렬된 데이터에서 S_i를 i번째 행의 튜플에 대해 각 컬럼의 값을 i로 나눈 나머지들의 합으로 정의합니다.row_begin 제한 사항1 1 1 data[i][j]는 i + 1 번째 튜플의 j + 1 번째 컬럼의 값을 의미합니다.1 1 성공 코드function solution(data, col, row_begin, row_end) { // 1. 테이블의 튜플을 col 번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, // 만약 그 값이 동일하면 기본키인 첫 번째 컬럼의 값을 기..