programmers

    Programmers / Level 3 / 단속카메라 / JS

    https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제분석이 문제는 전형적인 구간 스케줄링 문제이다.여러 구간이 주어졌을 때, 모든 구간을 커버하는 최소한의 점을 찾는 것과 같다. 직관적인 접근법차량들의 경로를 구간으로 생각한다.겹치는 구간들은 하나의 카메라로 처리가 가능하다.겹치지 않는 구간들은 각각 별도의 카메라가 필요하다. 풀이핵심 아이디어: 진출 기점을 기준으로 정렬한 후, greedy하게 카메라 위치를 선택한다.function solution(routes) { routes.sort((a, b..

    Programmers / Level 3 / 정수 삼각형 / JS

    https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이function solution(triangle) { const height = triangle.length; const dp = Array.from({ length: height }, (_, i) => Array(i + 1)); dp[0][0] = triangle[0][0]; for (let i = 1; i 문제 자체는 간단하다.주어진 triangle 배열과 똑같은 형태의 배열을 선언해주고 dp로 풀었다.dp로 이전 행의 좌, 우를 비교해서..

    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 3 / 경주로 건설 / JS

    https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제분석직선도로에서는 100의 비용이 들고,코너에서는 500의 비용이 든다.처음에 헷갈려서 틀렸었는데, '코너를 만드는데 드는 비용'이 500이므로,코너를 만들고 앞으로 한 칸 나아가려면 총 600의 비용이 든다. 또한, 어느 방향에서 왔는지에 따라 같은 칸이라도 비용이 다르게 들 수 있다.따라서 일반적인 방문처리를 하는 bfs로는 풀이가 불가능하다. 풀이const EMPTY = 0;const WALL = 1;const STRAIGHT_COST = 10..