반응형

Coding Problem 140

[프로그래머스] 배달

문제Summer/Winter Coding(~2018) - 배달https://school.programmers.co.kr/learn/courses/30/lessons/12978  풀이설명1번 마을에서 K 시간 내에 배달 가능한 마을의 개수를 구하는 문제입니다. 1번 마을에서 각 마을까지 걸리는 최단 시간을 구하면 됩니다.다익스트라 알고리즘을 사용해서 해결 가능합니다. 예시 코드function solution(N, road, K) { const graph = Array.from({ length: N + 1 }, () => []); for (const [a, b, weight] of road) { graph[a].push({ adjacentNode: b, weight }); graph[b].pu..

Coding Problem 2024.12.12

[프로그래머스] 124 나라의 숫자

문제124 나라의 숫자https://school.programmers.co.kr/learn/courses/30/lessons/12899  풀이설명n이 주어질 때, 124 나라에서 사용하는 숫자로 바꾼 값을 구하는 문제입니다. 124 나라의 숫자는 3진수에서 조금 변형된 형태입니다.나머지가 0, 1, 2일 때가 각각 4, 1, 2로 매핑됩니다.또 한 가지 주의할 점은 n을 나눌 때, 나머지가 0인 경우를 특별히 신경 써줘야 합니다.124 나라의 숫자는 0이 존재하지 않기 때문에, 나머지가 0인 경우 1을 빼주어야 올바르게 업데이트됩니다. 3진수와 124 나라의 숫자로 변환하는 예시를 보겠습니다. 3진수 변환12를 3진수로 변환하면 110이 됩니다.  124 나라 숫자 변환12를 124 나라 숫자로 변환하면..

Coding Problem 2024.12.11

[프로그래머스] 카카오 - 두 큐 합 같게 만들기

문제2022 카카오 테크 인턴십 - 두 큐 합 같게 만들기https://school.programmers.co.kr/learn/courses/30/lessons/118667  풀이설명길이가 같은 두 개의 큐가 주어질 때, 각 큐의 원소 합을 같게 만들기 위한 최소 작업 횟수를 구하는 문제입니다. 불가능할 경우 -1을 반환합니다. 두 큐의 합이 홀수인 경우는 원소 합을 같게 만들 수 없습니다. 다음과 같은 방식으로 문제를 해결합니다.두 개의 큐를 합쳐 새로운 큐를 만듭니다.투 포인터를 이용하여 첫 번째 큐의 원소 합을 계산 후 비교합니다.첫 번째 큐의 원소 합이 목푯값과 같다면 작업 횟수를 반환합니다.목푯값을 구하는 게 불가능한 경우, -1을 반환합니다. 주의해야 할 부분은 크게 두 가지입니다.반복문 종료..

Coding Problem 2024.12.10

[프로그래머스] 카카오 - 표 편집

문제2021 카카오 채용연계형 인턴십 - 표 편집https://school.programmers.co.kr/learn/courses/30/lessons/81303  풀이설명모든 명령어를 수행한 후의 표의 상태를 구하는 문제입니다. 행이 삭제되지 않으면 'O', 삭제되면 'X'로 표시됩니다. 행의 상태를 저장할 배열을 사용합니다. 모든 행이 활성 상태이므로, 초기값은 'O'로 설정합니다.삭제된 행을 파악하기 위해 스택을 사용합니다. 인덱스를 저장하여 복구 작업을 효율적으로 처리할 수 있습니다. 가장 중요한 부분은 테이블을 어떻게 구성하느냐입니다.테이블은 삭제되지 않은 행들을 쉽게 관리하기 위해 이중 연결 리스트로 구성합니다. 이 구조는 각 행이 삭제되지 않은 이전 행과 다음 행을 가리키므로, 빠른 탐색, ..

Coding Problem 2024.12.09

[프로그래머스] 풍선 터트리기

문제풍선 터트리기https://school.programmers.co.kr/learn/courses/30/lessons/68646  풀이설명서로 다른 숫자가 적힌 풍선들이 일렬로 놓여 있고, 규칙대로 풍선들을 1개만 남을 때까지 터트렸을 때, 최후까지 남기는 것이 가능한 풍선들의 개수를 구하는 문제입니다. 규칙은 다음과 같습니다.임의의 인접한 두 풍선을 고른 뒤, 번호가 더 큰 풍선을 터트립니다.딱 한 번에 한해서 번호가 더 작은 풍선을 터트릴 수 있습니다.터진 풍선으로 인해 풍선들 사이에 빈 공간이 생겼다면, 빈 공간이 없도록 풍선들을 중앙으로 밀착시킵니다. 규칙 1에 의해, 어떤 풍선이 최후까지 남을 수 있으려면, 그 풍선은 모든 풍선들 중 번호가 가장 작아야 합니다. 이는 자신의 오른쪽에 있는 모든..

Coding Problem 2024.12.08

[프로그래머스] 멀쩡한 사각형

문제멀쩡한 사각형https://school.programmers.co.kr/learn/courses/30/lessons/62048  풀이모든 격자 칸이 정사각형으로 이루어진 직사각형 종이를 대각선으로 잘랐을 때, 사용할 수 있는 정사각형의 개수를 구하는 문제입니다. 크게 두 가지 방법으로 해결할 수 있는 것 같습니다.1번 풀이기울기를 이용해 남은 정사각형의 개수를 구하는 방법입니다.x = 1, 2, ..., w - 1 일 때의 y 값을 구하고, 소숫점 이하를 버려 정사각형의 개수를 구합니다.이를 모두 더하면 한 쪽 면의 정사각형 개수가 됩니다. 여기에 2를 곱해 전체 개수를 구합니다. 1번 예시 코드function solution(w, h) { if (w === h) return w * h - w; ..

Coding Problem 2024.12.07

[프로그래머스] 기능개발

문제기능개발https://school.programmers.co.kr/learn/courses/30/lessons/42586  예시 코드function solution(progresses, speeds) { const releaseCounts = []; const requiredDays = progresses.map((progress, idx) => Math.ceil((100 - progress) / speeds[idx]) ); let daysUntilNextRelease = requiredDays[0]; let completedFeatureCount = 1; for (let i = 1; i  풀이각 배포마다 몇 개의 기능이 배포되는지를 구하는 문제입니다. 뒤에 있는 기능은 먼저 개발될 ..

Coding Problem 2024.12.06

[프로그래머스] 콜라 문제

문제콜라 문제https://school.programmers.co.kr/learn/courses/30/lessons/132267  예시 코드function solution(a, b, n) { return Math.floor((n - b) / (a - b)) * b;} 풀이콜라를 받기 위해 마트에 주어야 하는 병 수 a, 빈 병 a개를 가져다주면 마트가 주는 콜라 병 수 b, 상빈이가 가지고 있는 빈 병의 개수 n이 주어질 때, 받을 수 있는 콜라 병 수의 총합을 구하는 문제입니다. 받을 수 있는 콜라 병 수의 총합은 거래 횟수 * b 가 됩니다. 이제 거래 횟수만 구하면 되는데요.거래 한 번당 실질적으로 소모되는 콜라 병 수는 a - b 입니다.다만 먼저 a개를 주고 b개를 돌려받기 때문에, 마지막 거..

Coding Problem 2024.12.04

[프로그래머스] 모음사전

문제모음사전https://school.programmers.co.kr/learn/courses/30/lessons/84512  예시 코드function solution(word) { const vowels = ["A", "E", "I", "O", "U"]; const MAX_LENGTH = 5; const placeValues = getPlaceValues(MAX_LENGTH, vowels.length); let answer = 0; for (let i = 0; i  풀이주어진 단어가 사전에서 몇 번째에 등장하는지를 구하는 문제입니다. 사전에는 알파벳 모음만을 사용해서 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. placeValues는 자릿수별 가중치로, i번째 자리까지 정해..

Coding Problem 2024.12.03