본문 바로가기

Algorithm/BOJ133

[백준] 19237번 - 어른 상어 (파이썬) # 어른 상어 import copy import sys input = sys.stdin.readline N, M, k = map(int, input().split()) arr = [] shark = [] history = [[0] * N for _ in range(N)] history_index = [] for i in range(N): arr.append(list(map(int, input().split()))) for j in range(N): if arr[i][j] != 0: arr[i][j] = arr[i][j] history[i][j] = k history_index.append((i, j)) shark.append([arr[i][j], i, j]) shark_dir = [0]+list(map(.. 2022. 3. 19.
[백준] 17852번 - 주사위 윷놀이 (파이썬) # 주사위 윷놀이 import copy move = list(map(int, input().split())) horse = [[0, 0], [0, 0], [0, 0], [0, 0]] road = [[i for i in range(0, 41, 2)], [i for i in range( 0, 11, 2)]+[13, 16, 19], [i for i in range(0, 25, 2)], [i for i in range(0, 31, 2)]+[28, 27, 26], [25, 30, 35, 40]] def back_tracking(x, result, horse): global answer if x == 10: answer = max(answer, result) return for k in range(4): # 도착한.. 2022. 3. 18.
[백준] 20040번 - 사이클 게임 (파이썬) # 사이클 게임 N, T = map(int, input().split()) parent = [i for i in range(N)] def find_parent(x): if x != parent[x]: 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[x] = y return False else: return True for i in range(1, T+1): x, y = map(int, input().split()) if union_parent(find_parent(x.. 2022. 3. 16.
[백준] 1774번 - 우주신과의 교감 (파이썬) # 우주신과의 교감 import math import heapq import sys input = sys.stdin.readline N, M = map(int, input().split()) def prim(start): result = 0 visited = [False] * (N+1) q = [] heapq.heappush(q, (0, start)) while q: dist, node = heapq.heappop(q) if visited[node]: continue visited[node] = True result += dist for ndist, nnode in arr[node]: heapq.heappush(q, (ndist, nnode)) return result # 노드 위치 정보 nodes = .. 2022. 3. 15.
[백준] 17299번 - 오등큰수 (파이썬) # 오등큰수 from collections import Counter import sys input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) count = Counter(arr) result = [-1] * N stack = [] for i in range(N): while stack and count[arr[stack[-1]]] < count[arr[i]]: result[stack.pop()] = arr[i] stack.append(i) print(*result) 자료구조(스택) 1. Count를 이용해서 개수 딕셔너리를 만든다. 2. 반복문 시작 - 현재 인덱스(stack [-1])의 값보다 i의 값이 더 .. 2022. 3. 14.
[백준] 17298번 - 오큰수 (파이썬) # 오큰수 import sys input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) result = [-1] * N stack = [] for i in range(N): while stack and arr[stack[-1]] < arr[i]: result[stack.pop()] = arr[i] stack.append(i) print(*result) 자료구조(스택) 1. stack = [0]인 상태로 시작 2. 반복문은 시작 - 현재 인덱스(stack [-1])의 값보다 i의 값이 더 작으면 전부 pop (pop한 인덱스의 답 : 현재 값) - 이후 스택에 i appepnd 3. result 출력 스택 내부를 항상.. 2022. 3. 14.
[백준] 6497번 - 전력난 (파이썬) # 전력난 import heapq import sys input = sys.stdin.readline def prim(road_info, house, start): result = 0 q = [] heapq.heappush(q, (0, start)) visited = [False] * house while q: cost, home = heapq.heappop(q) if visited[home]: continue result += cost visited[home] = True for ncost, nhome in road_info[home]: if not visited[nhome]: heapq.heappush(q, (ncost, nhome)) return result while True: house, roa.. 2022. 3. 13.