분류 전체보기 (402) 썸네일형 리스트형 [백준 1539번] 이진 검색 트리 (Python3) import sys input = sys.stdin.readline def update(i): check[i] = 1 while i [백준 2957번] 이진 탐색 트리 (Python3) import sys input = sys.stdin.readline def update(i): check[i] = 1 while i [백준 16287번] Parcel (Python3) def solve(): check = [0]*(W+1) for i in range(N): for j in range(i+1,N): if (w:=weight[i]+weight[j]) [백준 17272번] 리그 오브 레전설 (Large) def multiply(A,B): S = [[0]*M for i in range(M)] for i in range(M): for j in range(M): for k in range(M): S[i][j] += A[i][k]*B[k][j] S[i][j] %= 10**9+7 return S def cal(A,n): if n==0: return [[int(i==j) for j in range(M)] for i in range(M)] if n==1: return A c = cal(A,n//2); c2 = multiply(c,c) return multiply(c2,A) if n%2 else c2 N,M = map(int,input().split()) print(cal([[int(i==j==0 or i==M-1 a.. [백준 18287번] 체스판 이동 (Python3) mod = 10**9+7 def multiply(A,B): S = [[0]*len(B[0]) for i in range(len(A))] for i in range(len(A)): for j in range(len(B[0])): for k in range(len(B)): S[i][j] += A[i][k]*B[k][j] S[i][j] %= mod return S def cal(A,n): if n==0: return [[int(i==j) for j in range(M)] for i in range(M)] if n==1: return A c = cal(A,n//2); c2 = multiply(c,c) return multiply(c2,A) if n%2 else c2 N,M = map(int,input().spl.. [백준 1736번] 쓰레기 치우기 (Python3) def clean(): last = 0 for i in range(N): end = last for j in range(last,M): if board[i][j]: end = j for j in range(last,end+1): board[i][j] = 0 last = end N,M = map(int,input().split()) board = [[*map(int,input().split())] for i in range(N)] result = 0 while sum(map(sum,board)): clean(); result += 1 print(result) 그리디 알고리즘 문제이다. 처음에는 정렬 문제라고 생각했다. 그러나 단순정렬로 해결하면 반례가 존재하는 것을 알게되었다. 풀이를 설명하면, 1. cl.. [백준 12928번] 트리와 경로의 길이 (Python3) N,S = map(int,input().split()) comb = [i*(i+1)//2 for i in range(N)] DP = [set() for i in range(S+1)] DP[0] = {(i,i) for i in range(N+1)} for i in range(N): c = comb[i] for s in range(1,S+1): if s-c [백준 16978번] 수열과 쿼리 22 (Python3) import sys input = sys.stdin.readline def update(i,v): d = v-value[i]; value[i] = v while i 이전 1 ··· 7 8 9 10 11 12 13 ··· 51 다음