본문 바로가기

Algorithm245

[백준] 2665번 - 미로만들기 (파이썬) # 미로만들기 from collections import deque import sys input = sys.stdin.readline N = int(input()) dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] arr = [] for i in range(N): arr.append(list(map(int, input().strip()))) def bfs(): q = deque() q.append((0, 0)) visited = [[-1] * N for _ in range(N)] visited[0][0] = 0 while q: x, y = q.popleft() if x == N-1 and y == N-1: return visited[x][y] for k in range(4): nx =.. 2022. 3. 4.
[백준] 4179번 - 불! (파이썬) # 불! from collections import deque import sys input = sys.stdin.readline dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] N, M = map(int, input().split()) arr = [] now = deque() fire = deque() for i in range(N): arr.append(list(input().strip())) for j in range(M): if arr[i][j] == 'J': now.append((i, j)) arr[i][j] = 1 if arr[i][j] == 'F': fire.append((i, j)) def move(): leng = len(now) for _ in range(leng):.. 2022. 3. 3.
[프로그래머스] 고득점Kit (3) - 힙 (파이썬) 1. 더 맵게 (Lv. 2) # 더 맵게 import heapq def solution(scoville, K): answer = 0 heapq.heapify(scoville) while scoville[0] = 2: new = heapq.heappop(scoville) + (heapq.heappop(scoville)*2) heapq.heappush(scoville, new) answer += 1 else: answer = -1 break return answer scoville리스트를 heapq로 만들어준다. (heapq.hepify) 가장 작은 값(scoville[0])이 K보다 작으면 두 재료를 섞어서 새로운 스코빌 지수를 가진 재료를 scoville에 넣어 .. 2022. 3. 2.
[백준] 2075번 - N번째 큰 수 ( 파이썬) # N번째 큰 수 import sys import heapq input = sys.stdin.readline N = int(input()) heap = [] for i in range(N): temp = list(map(int, input().split())) if i == 0: for x in temp: heapq.heappush(heap, x) continue for x in temp: if heap[0] < x: heapq.heappop(heap) heapq.heappush(heap, x) print(heap[0]) 힙 1. 한 줄씩 입력을 받고 첫 줄은 heapq에 push 2. 둘째 줄 부터는 - heap[0]보다 큰 수만 push - 이때, heap의 크기를 N만큼 유지해주기 위해서 pop 3.. 2022. 3. 2.
[프로그래머스] 고득점Kit (2) - 스택/큐 (파이썬) 1. 기능 개발 (Lv. 2) # 기능개발 def solution(progresses, speeds): days = [] for program, speed in zip(progresses, speeds): temp = (100-program) % speed days.append((100-program)//speed + 1 if temp else (100-program)//speed) answer = [] count = 1 start = days[0] for i, x in enumerate(days): if i+1 = days[i+1]: count += 1 else: answer.append(count) if i + 1 < len(days): start = days.. 2022. 3. 1.
[백준] 10775번 - 공항 (파이썬) # 공항 def find_parent(x): if x != parent[x]: parent[x] = find_parent(parent[x]) return parent[x] def union_parent(x, y): x = find_parent(x) y = find_parent(y) if x < y: parent[y] = x else: parent[x] = y G = int(input()) P = int(input()) parent = [i for i in range(G+1)] plane = [] for _ in range(P): plane.append(int(input())) count = 0 for p in plane: x = find_parent(p) if x == 0: break union_pare.. 2022. 3. 1.
[프로그래머스] 고득점Kit (1) - 해시 (파이썬) 1. 완주하지 못한 선수 (Lv. 1) # 완주하지 못한 선수 def solution(participant, completion): info = {} for i in participant: if info.get(i): info[i] += 1 else: info[i] = 1 for i in completion: info[i] -= 1 answer = '' for i, num in info.items(): if num != 0: answer = i break return answer 동명이인이 있기 때문에 {참가자 이름 : 이름 숫자} 쌍의 info선언 완주한 사람들의 숫자를 한명씩 줄인다. 남은 info에서 숫자가 0이 아는 이름이 완주를 하지 못한 사람의 이름이다. 2. 전화번호 목록 (Lv. 2) # .. 2022. 2. 20.