Algorithm 20

[프로그래머스 BFS | python] 게임 맵 최단거리

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1844Level 2 이 코드는 BFS를 이용하여 최단 경로를 탐색합니다.BFS는 시작 지점에서 가까운 노드부터 탐색하기 때문에, 도착 지점에 처음 도달했을 때가 곧 최단 거리이며,따라서visited[n-1][m-1]에 저장된 값이 최단 거리를 보장합니다.또한 방문 여부를 확인하며 중복 방문을 방지하기 때문에, 불필요한 경로 탐색도 하지 않습니다. from collections import dequedef solution(maps): n,m = len(maps), len(maps[0]) dx, dy = [1,-1,0,0], [0,0,1,-1] visited =..

Algorithm 2025.07.23

[카카오 코테 2020 | python] 키패드 누르기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/672562020 카카오 인턴십 Q1) 문제를 어떻게 이해했나요?A1)Q2) 문제를 어떻게 풀 예정인가요?A2) 각 숫자를 키패드의 좌표 (x, y)로 나타내고, 현재 왼손/오른손 위치에서 거리를 계산해서 규칙에 따라 손가락을 정하면 됩니다. def solution(numbers, hand): pos = { 1:(0,0), 2:(0,1), 3:(0,2), 4:(1,0), 5:(1,1), 6:(1,2), 7:(2,0), 8:(2,1), 9:(2,2), '*':(3,0), 0:(3,1), '#':(3,2) } left = pos..

Algorithm 2025.07.04

[프로그래머스 DP | python] 도둑질 🔥

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42897?gad_source=1&gad_campaignid=22199869887&gbraid=0AAAAAC_c4nDRnLcdW5pfc_L8ay5k5GtDz&gclid=CjwKCAjwvO7CBhAqEiwA9q2YJbDF7ryyIw-S7pZMj8oNlBDm7aMbK_Yl8KqiJW-_lkRW9I8WZ5mdFRoCT4UQAvD_BwE프로그래스 연습 Q1) 문제를 어떻게 이해했나요?A1) 원형으로 연결된 집들 중 인접한 두 집을 털 수 없을 때, 훔칠 수 있는 최대 금액을 구하는 동적 프로그래밍(DP) 문제Q2) 문제를 어떻게 풀 예정인가요?A2) 집들이 원형으로 연결되어 있기 때문에,첫 번째..

Algorithm 2025.07.01

[카카오 코테 2023 | python] 이모티콘 할인행사

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/150368level2 Q1) 문제를 어떻게 이해했나요?A1) 모든 할인율 조합에 대해 시뮬레이션을 수행하고, 각 조합에 대해 이모티콘 플러스 가입자 수와 판매액을 계산한 후,가입자 수 우선 → 판매액 기준으로 최적 결과를 찾는 완전탐색(Brute Force) 유형입니다.Q2) 문제를 어떻게 풀 예정인가요?A2) 이 문제는 가능한 할인율 조합이 매우 적기 때문에 완전탐색으로도 충분히 풀 수 있습니다.이모티콘이 최대 7개, 각 이모티콘마다 선택할 수 있는 할인율이 4가지(10,20,30,40)이므로총 경우의 수는 4⁷ = 16,384가지로, 계산량이 많지 않습니다.1. 가능한 모든 할인율 조..

Algorithm 2025.07.01

[카카오 코테 2020 | python] 문자열 압축 ✅

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/60057문자열 압축 문제, 구현/시뮬레이션Level2 Q1) 문제를 어떻게 이해했나요?A1)Q2) 문제를 어떻게 풀 예정인가요?A2) 🔥 내 풀이문자열을 슬라이싱 후 미리 리스트로 저장해놓고 반복함.list_compressed 전체가 메모리에 올라가므로 공간 사용 ↑슬라이싱 연산이 반복되므로 시간도 조금 더 듦리스트로 저장하고 다시 비교 → 속도 느림s[-(len(s)%i):] 추가 처리 → 로직 복잡도 ↑시간복잡도 → O(n²)def solution(s): best_compressed = 1001 i = 1 while i len("".join(compressed)):..

Algorithm 2025.06.27

[카카오 코테 2022 | python] 두 큐 합 같게 만들기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/118667Level2 Q1) 문제를 어떻게 이해했나요?A1) 입력: 두 개의 같은 길이의 큐출력: 각 큐의 합이 같아질 때까지의 최소 작업 횟수조건: 큐는 FIFO 구조, 어떤 방식으로도 합을 같게 못 맞추면 -1 반환Q2) 문제를 어떻게 풀 예정인가요?A2) deque로 큐 구현 → sum(queue1)이 목표의 절반 크기보다 크면 queue1에서 꺼내서 queue2로 이동, 반대도 마찬가지두 큐의 합이 같아 지는 순간 return- 최악의 경우를 *4로 안 이휴는 한 원소가 두 큐를 두 번찍 왔다갔다할 수 있으니까, 그 이상으로 갈 수도 있지만 시간 초과 문제와 최적화된 코드라면 그 ..

Algorithm 2025.06.25

[카카오 코테 2018 | python] [1차] 프렌즈4블록

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17679Level2 Q1) 문제를 어떻게 이해했나요?A1) 주어진 m x n 크기의 보드에서, 같은 캐릭터 4개가 2x2로 붙어 있으면 지워지고 그 위의 블록들이 아래로 떨어진다. 이 과정을 더 이상 지워질 블록이 없을 때까지 반복, 최종적으로 지워진 블록의 총 개수를 반환Q2) 문제를 어떻게 풀 예정인가요?A2) 1. 보드를 2차원 배열로 변환2. 2x2 블록 탐색하여 지워질 위치 기록3. 지울 위치가 없으면 반복 종료4. 지울 위치를 "0" 으로 표시하고 지움 처리5. 아래에서부터 블록을 채워 넣음(중력 구현)6. 반복하며 지워진 총 블록 개수 누적 ✅ 최적의 코드def solutio..

Algorithm 2025.06.25

[카카오 코테 2022 | python] 주차 요금 계산

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/92341level2 Q1) 문제를 어떻게 이해했나요?A1)입력 → fees: [기본 시간, 기본 요금, 단위 시간, 단위 요금], records: "HH:MM 차량번호 IN/OUT" 형태의 리스트 출력 → 차량 번호 오름차순으로, 각각의 최종 주차 요금 리스트 반환 규칙 → 입차 후 출차 기록이 없으면 23:59에 출차된 것으로 간주, 누적 주차 시간 계산 후: 기본시간 이하면 기본요금, 초과시간은 단위시간으로 올림 계산하여 요금 부과Q2) 문제를 어떻게 풀 예정인가요?A2)단계 1: 문자열을 분리해서 시각/차량번호/상태로 파싱단계 2: 입차 시각은 저장하고, 출차 시 총 누적 시간을 ..

Algorithm 2025.06.24

[카카오 코테 2018 | python] 파일명 정렬

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17686level2문자, 숫자 판별 함수 Q1) 문제를 어떻게 이해했나요?A1) 파일명은 [HEAD][NUMBER][TAIL] 형태 정렬 기준은 다음과 같아요: 1. HEAD를 대소문자 구분 없이 정렬 (사전 순) 2. HEAD가 같으면 NUMBER를 정수로 비교해 정렬 3. 둘 다 같으면 입력 순서를 유지 (Stable Sort) Q2) 문제를 어떻게 풀 예정인가요?A2)1. 파일명을 HEAD, NUMBER, TAIL로 나누기2. HEAD는 소문자로 변환해서 비교3. NUMBER는 정수로 변환해서 비교4. 정렬 후 원래 문자열 반환 💫 최적화된 코드 (정규표현식 안쓰고, 하나씩 순회..

Algorithm 2025.06.23

[카카오 코테 2019 | python] 크레인 인형뽑기 게임 ✅

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/640612019 카카오 개발자 겨울 인턴십크레인 인형뽑기 게임 Q1) 문제를 어떻게 이해했나요?A1) 크레인을 좌우로 움직이며 인형을 집어 바구니에 쌓는다. 같은 인형이 바구니에 연속으로 두 개 쌓이면 터진다. 인형이 터질 때마다 2개 사라지므로 2점을 얻는다. 인형은 가장 위에 있는 것만 집힌다.Q2) 문제를 어떻게 풀 예정인가요?A2) moves: 크레인을 몇 번째 열에서 작동시킬지 알려주는 리스트.크레인 작동 시: 해당 열의 맨 위 인형을 찾는다. 인형을 바구니(stack)에 넣는다. 바구니의 top 2개가 같으면 pop해서 사라진다 → 점수 +21. 빈 바구니(basket = []..

Algorithm 2025.06.23
728x90