본문 바로가기

분류 전체보기

(402)
[백준 8111번] 0과 1 (Python3) from collections import * def check(nums): one = 0 for i in range(1,len(nums)+1): if nums[-i]=="0": continue if nums[-i]=="1": one = 1 continue return int(nums[-i]),i,one return 0,0,0 def BFS(): dq = deque([1]) while dq: x = dq.popleft() nums = str(N*x) if len(nums)>100: continue n1,i,one = check(nums) if not i: return nums if one: nums = nums[:-i+1] if nums in memo: continue memo.add(nums) for ..
[백준 12899번] 데이터 구조 (Python3) import sys input = sys.stdin.readline M = 1
[백준 2618번] 경찰차 (Python3) import sys input = sys.stdin.readline def DFS(p1,p2): next = max(p1,p2)+1 if next == W+2: return if not DP[next][p2]: DFS(next,p2) if not DP[p1][next]: DFS(p1,next) x1,x2 = DP[next][p2]+graph[p1][next],DP[p1][next]+graph[p2][next] if x1
[백준 2243번] 사탕상자 (Python3) import sys input = sys.stdin.readline M = 2**20 def updatefenwick(i,v): while i= x and s-data[i] < x: return i if s < x: return find(x,i+2**c,c-1) return find(x,i-2**c,c-1) N = int(input()) data,fenwick = [0]*(M+1),[0]*(M+1) for _ in range(N): Q = [*map(int,input().split())] if Q[0]==1: idx = find(Q[1],2**19,18) data[idx] -= 1 updatefenwick(idx,-1) print(idx) else: data[Q[1]] += Q[2] updatefenwi..
[백준 2268번] 수들의 합 7 (Python3) import sys input = sys.stdin.readline def sumfenwick(i): SUM = 0 while i: SUM += fenwick[i] i -= i&-i return SUM N,M = map(int,input().split()) data,fenwick = [0]*(N+1),[0]*(N+1) for _ in range(M): q,i,j = map(int,input().split()) if q: diff,data[i] = j-data[i],j while i
[백준 1175번] 배달 (Python3) import sys,collections input = sys.stdin.readline dy = [1,-1,0,0]; dx = [0,0,1,-1] def BFS(): visited = [[[[0]*M for i in range(N)] for i in range(5)] for i in range(3)] dq = collections.deque([(*start,0,0,4)]) while dq: y,x,t,bit,d = dq.popleft() if visited[bit][d][y][x]: continue visited[bit][d][y][x] = 1 if type(board[y][x])==int: bit |= 1=0 and M>x1>=0 and board[y1][x1] != "#": dq.append((y1..
[백준 2176번] 합리적인 이동경로 (Python3) import sys input = sys.stdin.readline from heapq import * def Dijkstra(): DP = [1e9]*N hq = [(0,1)] while hq: w,now = heappop(hq) if DP[now]
[백준 2423번] 전구를 켜라 (Python3) import sys,collections input = sys.stdin.readline dy = [1,1,-1,-1]; dx = [1,-1,-1,1] def BFS(): if (N+M)%2: return "NO SOLUTION" visited = [[0]*(M+1) for i in range(N+1)] dq = collections.deque([(0,0,0)]) while dq: y,x,d = dq.popleft() if visited[y][x]: continue visited[y][x] = 1 if y==N and x==M: return d for i in range(4): y1,x1 = y+dy[i],x+dx[i] if N>=y1>=0 and M>=x1>=0 and not visited[y1][x1..