끄적끄적 코딩
[Javascript] 프로그래머스 - 과제 진행하기
알고리즘 2025. 2. 26. 22:01

문제 설명루는 여러 개의 과제를 수행해야 하며, 다음과 같은 규칙을 따릅니다.과제는 정해진 시작 시각이 되면 시작합니다.새로운 과제를 시작해야 하는 시각이 되면, 진행 중이던 과제는 멈추고 새 과제를 시작합니다.멈춘 과제는 이후 시간이 생기면 다시 진행합니다.멈춰둔 과제가 여러 개라면, 가장 최근에 멈춘 과제부터 진행합니다.과제를 완료한 순서대로 결과를 반환해야 합니다.제한 사항과제 개수는 3개 이상 1,000개 이하입니다.과제 이름은 알파벳 소문자로 이루어져 있으며, 길이는 2~10자입니다.모든 과제의 시작 시각은 겹치지 않으며, "hh:mm" 형식으로 주어집니다.각 과제의 소요 시간은 1분 이상 100분 이하입니다.주어진 과제 목록은 반드시 시간순으로 정렬되어 있지는 않습니다.해결 방법알고리즘: 스택..

[Javascript] 프로그래머스 - 요격 시스템
알고리즘 2025. 2. 25. 23:20

문제 설명A 나라가 B 나라를 침공하며, B 나라의 전략 자원 보호를 위해 최소한의 요격 미사일을 사용하여 모든 폭격 미사일을 요격해야 합니다.각 폭격 미사일은 (s, e)의 개구간으로 표현되며, 특정 x 좌표에서 y 축에 수평이 되도록 요격 미사일을 발사하면 해당 x 좌표에 걸쳐 있는 모든 폭격 미사일을 요격할 수 있습니다.최소한의 요격 미사일 수를 구하는 문제입니다.제한 사항1 ≤ targets.length ≤ 500,0000 ≤ s (s, e) 형태의 개구간으로 표현된 폭격 미사일은 s와 e에서 요격할 수 없음.요격 미사일은 실수 x 좌표에서도 발사 가능.해결 방법알고리즘: 그리디(Greedy) 기법폭격 미사일을 끝 지점 기준으로 오름차순 정렬합니다.가장 먼저 끝나는 미사일의 종료 지점에 요격 미사..

[Javascript] 프로그래머스 - 지게차와 크레인
알고리즘 2025. 2. 23. 18:28

문제 설명물류창고에는 알파벳 대문자로 구분되는 컨테이너들이 n×m 크기의 격자로 배치되어 있다. 출고 요청이 들어올 때, 요청된 컨테이너를 창고에서 꺼내야 한다.지게차를 사용하면 창고 외부와 연결된 동일 종류의 컨테이너만 출고된다.크레인을 사용하면 해당 종류의 모든 컨테이너를 출고할 수 있다.모든 요청을 수행한 후 남아있는 컨테이너의 개수를 구하는 문제이다.제한 사항2 ≤ n, m ≤ 50storage는 알파벳 대문자로 구성된 2차원 배열requests의 길이는 1 이상 100 이하requests[i]는 한 종류의 알파벳 대문자로 이루어진 문자열(길이 1이면 지게차, 길이 2이면 크레인)해결 방법알고리즘: BFS, 구현창고 확장 및 경계 설정n+2 × m+2 크기의 새로운 배열을 생성하여 외부 경계를 -..

[Javascript] 프로그래머스 - 미로 탈출
알고리즘 2025. 2. 22. 23:02

문제 설명주어진 직사각형 격자 형태의 미로에서 출발 지점(S)에서 시작하여, 레버(L)를 당긴 후 출구(E)까지 도달하는 최소 시간을 구하는 문제입니다. 미로에서 이동할 수 있는 곳은 통로(O)와 출구(E), 레버(L)이며, 벽(X)은 지나갈 수 없습니다. 이동에는 1초가 걸리며, 탈출이 불가능한 경우 -1을 반환해야 합니다.제한 사항미로의 크기는 5 ≤ 행의 개수, 열의 개수 ≤ 100미로는 'S', 'E', 'L', 'O', 'X' 문자로 이루어짐시작 지점(S), 출구(E), 레버(L)은 각각 하나씩 존재출구(E)는 레버를 당기지 않아도 지나갈 수 있음해결 방법알고리즘: 너비 우선 탐색 (BFS)위치 및 방문 배열 초기화미로를 순회하며 시작 지점(S), 출구(E), 레버(L)의 위치를 저장visit ..

[Javascript] 프로그래머스 - 유연근무제
알고리즘 2025. 2. 21. 03:03

문제 설명회사에서는 유연근무제를 시행하며, 직원들이 설정한 출근 희망 시각에 맞춰 출근하면 상품을 제공하는 이벤트를 진행한다.직원들은 설정한 출근 희망 시각 + 10분까지 출근해야 하며, 토요일과 일요일은 이벤트 대상에서 제외된다.모든 시각은 시에 100을 곱하고 분을 더한 정수로 표현되며, 이를 기반으로 상품을 받을 수 있는 직원의 수를 구한다.제한 사항직원 수: 1 ≤ n ≤ 1,000출근 희망 시각 범위: 700 ≤ schedules[i] ≤ 1100출근 기록 시각 범위: 600 ≤ timelogs[i][j] ≤ 2359이벤트 시작 요일: 1 ≤ startday ≤ 7 (1: 월요일, 7: 일요일)해결 방법알고리즘: 구현, 배열 탐색각 직원의 출근 허용 시간(출근 희망 시각 + 10분)을 계산한다...

[Javascript] 프로그래머스 - 비밀 코드 해독
알고리즘 2025. 2. 20. 22:16

문제 설명서로 다른 5개의 정수로 이루어진 비밀 코드가 존재하며, 이를 맞히기 위해 여러 번의 시도를 할 수 있습니다. 각 시도마다 입력한 5개의 정수 중 비밀 코드에 포함된 정수의 개수를 시스템이 알려줍니다. 주어진 시도 결과를 기반으로 비밀 코드로 가능한 정수 조합의 개수를 구하는 문제입니다.제한 사항10≤n≤3010 \leq n \leq 3010≤n≤301≤m≤101 \leq m \leq 101≤m≤10각 시도에서 입력하는 정수 배열의 길이는 5이며, 오름차순으로 정렬됨각 정수는 1 이상 nnn 이하의 값응답 배열은 각 시도에서 몇 개의 정수가 비밀 코드에 포함되었는지를 나타냄비밀 코드가 존재하지 않는 경우는 없음해결 방법알고리즘: 백트래킹, 완전 탐색모든 가능한 조합 생성nnn개의 정수 중 5개를..

[Javascript] 프로그래머스 - 완전범죄
알고리즘 2025. 2. 19. 21:57

문제 설명두 도둑이 경찰에 붙잡히지 않도록 모든 물건을 훔치는 문제입니다. 각 도둑이 물건을 훔칠 때 남기는 흔적이 있으며, 특정 수치 이상이 되면 경찰에 붙잡힙니다. 모든 물건을 가져가면서도 두 도둑이 붙잡히지 않도록 흔적을 최소화하는 것이 목표입니다.제한 사항물건 개수: 최대 40개흔적 개수: 1 이상 3 이하A도둑과 B도둑이 경찰에 붙잡히는 한계: 최대 120해결 방법알고리즘: 우선순위 큐를 활용한 상태 공간 탐색 (BFS 변형)우선순위 큐(Priority Queue) 사용현재까지의 최소 흔적을 기준으로 탐색 순서를 결정흔적이 적은 경로부터 탐색하여 최소값을 찾음방문 여부 확인 (3차원 배열 사용)visit[a][b][i]를 사용해 특정 흔적 상태에서 특정 물건을 고려한 적이 있는지 체크BFS 방식..

[Javascript] 프로그래머스 - 택배 상자 꺼내기
알고리즘 2025. 2. 19. 05:14

문제 설명창고에는 1부터 n까지 번호가 매겨진 택배 상자가 존재하며, 가로로 w개씩 배치한 뒤 지그재그 방식으로 쌓여 있습니다. 특정 상자 num을 꺼내기 위해서는 그 위에 있는 모든 상자를 먼저 꺼내야 합니다. 주어진 n, w, num을 바탕으로 총 몇 개의 상자를 꺼내야 하는지 계산하는 문제입니다.제한 사항1 ≤ n ≤ 10,0001 ≤ w ≤ 1001 ≤ num ≤ n해결 방법알고리즘: 구현창고의 배치를 2차원 배열로 생성합니다.왼쪽에서 오른쪽으로 채운 후, 다음 층은 오른쪽에서 왼쪽으로 채우는 방식으로 반복합니다.찾고자 하는 상자(num)의 위치를 파악합니다.num이 포함된 행과 열의 좌표를 저장합니다.해당 좌표에서 아래쪽으로 몇 개의 상자가 쌓여 있는지 세어 반환합니다.시간 복잡도창고를 구성하는..

검색 태그