알고리즘/백준
-
[백준] 1091 - 카드 섞기 (파이썬)알고리즘/백준 2022. 4. 13. 15:58
import copy n = int(input()) p = list(map(int,input().split())) s = list(map(int,input().split())) cnt = 0 check = copy.deepcopy(p) while cnt < 500000: trust = True for i in range(0,n,3): if check[i] == 0 and check[i+1] == 1 and check[i+2] == 2: continue else: trust = False if trust: break for i in range(len(p)): check[s[i]] = p[i] cnt += 1 p = copy.deepcopy(check) if cnt == 500000: print(-1) el..
-
[백준] 1238 - 파티 (파이썬)알고리즘/백준 2022. 4. 13. 15:57
import heapq n, m, x = map(int,input().split()) array = [[] for _ in range(n+1)] for _ in range(m): s,e,c = map(int,input().split()) array[s].append([c,e]) def search(start,end): hp = [] heapq.heappush(hp,[0,start]) visit = [False for _ in range(n+1)] while hp: nlist = heapq.heappop(hp) cost = nlist[0] node = nlist[1] if node == end: return cost visit[node] = True for i in array[node]: if visit[..
-
[백준] 1393 - 음하철도 구구팔 (파이썬)알고리즘/백준 2022. 4. 13. 15:55
xs, ys = map(int,input().split()) xe, ye, dx, dy = map(int,input().split()) if dx != 0 and dy != 0: for i in range(min(abs(dx),abs(dy)),0,-1): if abs(dx) % i == 0 and abs(dy) % i == 0: if dx >= 0: dx //= i else: dx = -abs(dx)//i if dy >= 0: dy //= i else: dy = -abs(dy)//i break elif dx == 0: if dy > 0: dy = 1 else: dy = -1 elif dy == 0: if dx > 0: dx = 1 else: dx = -1 answer = 9999999 cnt = 0 x,..
-
[백준] 1747 - 소수&펠린드롬 (파이썬)알고리즘/백준 2022. 4. 13. 15:54
import math def primeNumber(num): if num == 2 or num == 3: return True elif num == 1: return False for i in range(2,int(math.sqrt(num))+1): if num % i == 0: return False return True def palindrome(num): array = str(num) if array == array[::-1]: return True else: return False n = int(input()) for i in range(n,20000000): if primeNumber(i) and palindrome(i): print(i) break
-
[백준] 1261 - 알고스팟 (파이썬)알고리즘/백준 2022. 3. 28. 16:06
from heapq import heappush, heappop m, n = map(int, input().split()) dx = [1, -1, 0, 0] dy = [0, 0, -1, 1] s = [] visit = [[0] * m for i in range(n)] for i in range(n): s.append(list(map(int, input()))) def bfs(): heap = [] heappush(heap, [0, 0, 0]) visit[0][0] = 1 while heap: c, a, b = heappop(heap) if a == n - 1 and b == m - 1: print(c) return for i in range(4): x = a + dx[i] y = b + dy[i] if 0
-
[백준] 20923 - 숫자 할리갈리 게임 (파이썬)알고리즘/백준 2022. 3. 28. 16:04
from collections import deque import sys n,m = map(int,sys.stdin.readline().split()) do_deck = deque() su_deck = deque() for _ in range(n): a,b = map(int,sys.stdin.readline().split()) do_deck.append(a) su_deck.append(b) do = 0 su = 0 do_gnd = deque() su_gnd = deque() for i in range(m): if i % 2 == 0: do = do_deck.pop() do_gnd.append(do) else: su = su_deck.pop() su_gnd.append(su) if len(do_deck) ..
-
[백준] 14284 - 간선 이어가기2 (파이썬)알고리즘/백준 2022. 3. 28. 16:03
import heapq import sys INF = sys.maxsize # input = sys.stdin.readline def dijkstra(start): q = [] heapq.heappush(q, (0, start)) dis[start] = 0 while q: d, now = heapq.heappop(q) if dis[now] < d: continue for v, w in graph[now]: cost = d + w if cost < dis[v]: dis[v] = cost heapq.heappush(q, (cost, v)) n, m = map(int, input().split()) graph = [[] for _ in range(n+1)] dis = [INF]*(n+1) for _ in ra..