본문 바로가기

Algorithm245

[백준] 17472번 - 다리 만들기 2 (파이썬) # 다리 만들기 2 from collections import deque import sys input = sys.stdin.readline MAX = sys.maxsize dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] N, M = map(int, input().split()) land = [] arr = [] for i in range(N): arr.append(list(map(int, input().split()))) for j in range(M): if arr[i][j] == 1: land.append((i, j)) def find_land(visited, a, b, num): q = deque() q.append((a, b)) while q: x, y = q.popleft(.. 2022. 2. 19.
[백준] 1613번 - 역사 (파이썬) # 역사 import sys input = sys.stdin.readline N, M = map(int, input().split()) arr = [[False]*(N+1) for _ in range(N+1)] for a in range(1, N+1): for b in range(1, N + 1): if a == b: arr[a][b] = False for _ in range(M): a, b = map(int, input().split()) arr[a][b] = True for k in range(1, N+1): for i in range(1, N+1): for j in range(1, N+1): if arr[i][k] and arr[k][j]: arr[i][j] = True K = int(input().. 2022. 2. 19.
[백준] 10159번 - 저울 (파이썬) # 저울 import sys input = sys.stdin.readline N = int(input()) M = int(input()) arr = [[False]*(N+1) for _ in range(N+1)] for a in range(1, N+1): for b in range(1, N+1): if a == b: arr[a][b] = False for _ in range(M): a, b = map(int, input().split()) arr[a][b] = True for k in range(1, N+1): for i in range(1, N+1): for j in range(1, N+1): if arr[i][k] and arr[k][j]: arr[i][j] = True for i in range(1.. 2022. 2. 19.
[백준] 2143번 - 두 배열의 합 (파이썬) # 두 배열의 합 import sys import bisect input = sys.stdin.readline K = int(input()) N = int(input()) A = list(map(int, input().split())) M = int(input()) B = list(map(int, input().split())) sum_A = [] for i in range(N): sum = 0 for j in range(i, N): sum += A[j] sum_A.append(sum) sum_B = [] for i in range(M): sum = 0 for j in range(i, M): sum += B[j] sum_B.append(sum) result = 0 sum_B.sort() for sum_a.. 2022. 2. 18.
[백준] 2352번 - 반도체 설계 (파이썬) # 반도체 설계 import sys import bisect input = sys.stdin.readline N = int(input()) port = list(map(int, input().split())) result = [port[0]] for x in range(1, N): if port[x] > result[-1]: result.append(port[x]) else: index = bisect.bisect_left(result, port[x]) result[index] = port[x] print(len(result)) 이진탐색, bisec 1. 입력을 받고 port의 첫번째 값을 result에 추가 2. 남은 port의 값중에서 - result의 마지막 값보다 크면 append - result.. 2022. 2. 18.
[백준] 3109번 - 빵집 (파이썬) # 빵집 import sys input = sys.stdin.readline N, M = map(int, input().split()) arr = [] for _ in range(N): arr.append(list(input().strip())) dx = [-1, 0, 1] dy = [1, 1, 1] def pipe(x, y): global result arr[x][y] = 'o' if y == M-1: result += 1 return True for k in range(3): nx = x + dx[k] ny = y + dy[k] if 0 2022. 2. 18.
[프로그래머스] - 블록게임 (파이썬) # 블록게임 import copy dx = [[0, 0, 0, 1, 1, 1], [0, 0, 1, 1, 2, 2]] dy = [[0, 1, 2, 0, 1, 2], [0, 1, 0, 1, 0, 1]] answer = 0 def solution(board): N = len(board) global answer while True: if not drop_block(board): break return answer def drop_block(arr): N = len(arr) for j in range(N): for i in range(N): if arr[i][j] == -1: continue if arr[i][j] != 0: break arr[i][j] = -1 return check(arr) def check.. 2022. 2. 15.