본문 바로가기

알고리즘 배우기20

[프로그래머스] Lv 1. 대충 만든 자판 def solution(keymap, targets): answer = [] dict = {} for key in keymap: for i, ch in enumerate(key): if ch not in dict: dict[ch] = i else: if dict[ch] > i: dict[ch] = i for target in targets: cnt = 0 for ch in target: #딕셔너리에 아예 없는 경우 -1 종료 if ch not in dict: .. 2024. 7. 14.
[프로그래머스] Lv 2. [PCCP 기출문제] 2번 / 석유 시추 from collections import dequedef bfs(a, b, result, visited, land): dx = [0,0,1,-1] dy = [1,-1,0,0] n = len(land) m = len(land[0]) cnt = 0 visited[a][b] = 1 q = deque() q.append((a, b)) min_y, max_y = b, b while q: x, y = q.popleft() min_y = min(min_y, y) max_y = max(max_y, y) cnt += 1 for i in range(4): nx = x + dx[i] .. 2024. 7. 14.
[엘리스 코딩] 엘리스 코드 챌린지 1일차 보호되어 있는 글 입니다. 2024. 7. 8.
[프로그래머스] Lv 2. 도넛과 막대 그래프 일단 문제부터 해석하기가 어려웠음.따라서, 그냥 문제를 읽고 생각의 흐름만 정리해봄.해당 입력에서 '생성한 정점 노드가 2' 라는 의미가 도무지 무슨 말인지 이해가 가지 않았다.이해한 결과는 먼저, 총 3가지의 그래프의 종류 [ 도넛 모양 그래프, 막대 모양 그래프, 8자 모양 그래프 ]가 존재하는데 이것들을 별도로 생성한 다음 해당 그래프들과 '하나의 정점'이 위의 3가지 종류의 그래프들을 잇는 역할을 한다는 것이다. 이제 얼추 문제를 파악했으니, 어떻게 edge들의 집합으로만 3가지 종류의 그래프를 구분할 수 있을지 고민해 보자. 가장 어려울 듯한 모양이 '8자 모양'인 듯하다. 8자 모양 그래프는 크기가 동일한 2개의 도넛 모양 그래프에서 정점을 하나씩 골라 결합시킨 형태의 그래프입니다. 결국 도넛.. 2024. 6. 30.