본문 바로가기

분류 전체보기

(116)
파이썬 | 백준 | 1074 | Z solution1 : 2차원 배열 1. 2차원 배열을 -1로 초기화해둔 후 재귀함수를 호출하며 1씩 증가되는 수를 저장 2. lst[r][c] 출력 # 1074, Z import sys input = sys.stdin.readline def z(x, y, k): global num if k == 2: if lst[x][y] == -1: for i in range(2): for j in range(2): lst[x+i][y+j] = num num += 1 else: z(x, y, k // 2) z(x, y + k // 2, k // 2) z(x + k // 2, y, k // 2) z(x + k // 2, y + k // 2, k // 2) N, r, c = map(int, input().split()) ..
파이썬 | 백준 | 2352 | 반도체 설계 solution 1. 1365 꼬인 전깃줄하고 비슷한 유형 https://li-fo.tistory.com/50?category=921537 2. LIS의 길이 출력 # 2352, 반도체 설계 import sys input = sys.stdin.readline def lower_bound(s, e, v): while s lst1[-1]: lst1.a..
파이썬 | 백준 | 2606 | 바이러스 solution 1. bfs : 84ms 2. dfs 이용 # 2606, 바이러스 import sys input = sys.stdin.readline def dfs(x): visited[x] = 1 global virus for i in network[x]: if not visited[i]: virus += 1 dfs(i) return virus n = int(input()) m = int(input()) network = [[] for _ in range(n+1)] for _ in range(m): a, b = map(int, input().split()) network[a].append(b) network[b].append(a) visited = [0]*(n+1) virus = 0 print(dfs(..
파이썬 | 백준 | 1992 | 쿼드트리 solution 1. 사분면을 나눌 때 괄호 추가 2. (x, y) → (y, x) # 1992, 쿼드트리 import sys def com(x, y, n): check = bw[x][y] global res for i in range(x, x + n): for j in range(y, y + n): if bw[i][j] != check: # 영상이 같은 색이 아님 print('(', end='') com(x, y, n // 2) # 1 com(x, y + n // 2, n // 2) # 2 com(x + n // 2, y, n // 2) # 3 com(x + n // 2, y + n // 2, n // 2) # 4 print(')', end='') return if check == 0: # 영상이 모두..
파이썬 | 백준 | 2644 | 촌수계산 solution 1. bfs 이용 2. 입력받은 수가 같으면 0촌 # 2644, 촌수계산 import sys from collections import deque def bfs(x, y): if x == y: return 0 visited[x-1] = 1 q = deque() q.append(x-1) while q: tmp = q.popleft() for i in fam[tmp]: if not visited[i]: visited[i] = visited[tmp] + 1 if i == y-1: return visited[tmp] q.append(i) return -1 n = int(sys.stdin.readline()) a, b = map(int, sys.stdin.readline().split()) fam..
파이썬 | 백준 | 1935 | 후위 표기식2 | 소수 둘째자리까지 출력 solution 1. 스택 이용 → 연산자면 pop() 두 번 2. print('%.2f' % n) : 소수 둘째 자리까지 출력 # 1395, 후위 표기식 2 import sys from collections import deque n = int(sys.stdin.readline()) ex = deque() ex.extend(list(sys.stdin.readline().rstrip())) num = [] for _ in range(n): num.append(int(sys.stdin.readline())) tmp = [] res = 0 while ex: x = ex.popleft() if x == '+' or x == '-' or x == '*' or x == '/': a = tmp.pop() b = t..
파이썬 | 백준 | 1365 | 꼬인 전깃줄 | LIS(최장 증가 수열) solution 1. LIS(최장 증가 수열) 이용 # 1365, 꼬인 전깃줄 import sys # 해당 숫자 이상의 수 중 가장 가까운 인덱스를 리턴하는 함수 ( 정렬이 되어있을 때만 가능 ) def lower_bound(s, e, v): while s < e: m = (s + e) // 2 if res[m] < v: s = m + 1 else: e = m return e n = int(sys.stdin.readline()) line = list(map(int, sys.stdin.readline().split())) res = [] for i in range(n): if i == 0: # 첫 번째 수는 res에 추가 res.append(line[0]) if res[-1] < line[i]: # lin..
파이썬 | 백준 | 5567 | 결혼식 solution 친구의 친구 : 두 학번 사이의 거리가 2 이내여야 한다. # 5567, 결혼식 import sys from collections import deque def bfs(x): visited = [0] * n visited[x] = 1 q.append(x) while q: x = q.popleft() for i in friends[x]: if not visited[i]: visited[i] = visited[x] + 1 q.append(i) return visited n = int(sys.stdin.readline()) m = int(sys.stdin.readline()) friends = [[] for _ in range(n)] for _ in range(m): a, b = map(int..