[백준] 16928번(python 파이썬) bfs 특징 1. queue 2. visited 여부 3. 상하좌우 => 여기선 주사위(1~6) from collections import deque def bfs(): q = deque([1]) visited[1] = True while q: now = q.popleft() for i in range(1, 7): move = now + i if 0 < move 알고리즘 2022.08.18
[백준] 10026번(python 파이썬) import sys sys.setrecursionlimit(100000) input = sys.stdin.readline n = int(input()) ##방문 했는지 안 했는지 구별 visited = [[False] * n for _ in range(n)] ##입력값 matrix 만들기 matrix = [list(input().rstrip()) for _ in range(n)] ##dfs 함수 만들기 def dfs(x, y): cur_color = matrix[x][y] visited[x][y] = True dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0 알고리즘 2022.08.02
[백준] 11403번 (python 파이썬)(플로이드 와샬) n = int(input()) grp = [[0 for col in range(n)] for row in range(n)] for i in range(n): for j, v in enumerate(map(int, input().split())): grp[i][j] = v for k in range(n): for i in range(n): for j in range(n): if grp[i][k] and grp[k][j]: grp[i][j] = 1 for i in range(n): for j in range(n): print(grp[i][j], end=" ") print() 다른 블로그들을 참고했습니다 이 문제는 '플로이드 와샬' 알고리즘을 사용합니다 플로이드 와샬에 대해 잘 와닿는 표현이 모든 '거쳐가는 .. 알고리즘 2022.07.31
[백준] 11286번 (python 파이썬) import heapq import sys n = int(input()) abs_n = [] for _ in range(n): x = int(sys.stdin.readline()) if x != 0: heapq.heappush(abs_n, (abs(x), x)) elif x == 0: if abs_n: print(heapq.heappop(abs_n)[1]) else: print(0) 최대 힙, 최소 힙에 대해 알면 쉽게 풀 수 있습니다 알고리즘 2022.07.24
[백준] 17626번 (python 파이썬) n = int(input()) n_list = [0] * (n+1) n_list[1] = 1 for i in range(2, n+1): j = 1 min_v = 4 while (j**2) 알고리즘 2022.07.11
[백준] 11727번 (python 파이썬) n = int(input()) d = [0, 1, 3, 5] if n < 4: print(d[n]) else: for i in range(4, n + 1): d.append((d[i - 1] + 2*d[i - 2]) % 10007) print(d[n]) 어떤식으로 해야 될지 몰랐는데 가장 뒤에 올 수 있는 경우의 수를 기준으로 잡고 생각하면 쉽게 풀린다 파란색은 차례대로 d(n - 1), d(n - 2), d(n - 2) 일 때를 얘기 한다 따라서 d[n] = d[n - 1] + 2*[n - 2] 식을 만들 수 있다 알고리즘 2022.07.06
[백준] 9461번 (python 파이썬) t = int(input()) for _ in range(t): s = [0, 1, 1, 1] n = int(input()) if n < 4: print(s[n]) else: for i in range(4, n+1): s.append(s[i - 3] + s[i - 2]) print(s[n]) 1, 1, 1, 2, 2, 3, 4, 5, 7, 9 규칙을 보면 n +3 번째는 n 과 n + 1 의 합이다 이것만 알면 쉽게 풀리는 문제이다 알고리즘 2022.07.05
[백준] 9375번 (python 파이썬) from collections import Counter t = int(input()) for _ in range(t): n = int(input()) arr = [] for i in range(n): a, b = input().split() arr.append(b) res = Counter(arr) num = 1 for k in res: # res = { headgear : 2 , eyewear : 1 } , { face : 3 } num *= res[k] + 1 print(num - 1) 첫번째 경우의 규칙을 살펴 보면 (hat, sunglasses) (turban, sunglasses) (hat) (turban) (sunglasses) 5가지 headgear : 2 eyewear : 1 하나씩만 입.. 알고리즘 2022.07.03
[백준] 17219번 (python 파이썬) n, m = map(int, input().split()) dic = {} for _ in range(n): k, v = map(str, input().split()) dic[k] = v for _ in range(m): print(dic[input()]) 딕셔너리로 쉽게 풀린다. 알고리즘 2022.07.03
[백준] 1003번(python 파이썬) zero = [1, 0, 1] one = [0, 1, 1] def fibonacci(num): length = len(one) if num >= length: for i in range(length, num + 1): zero.append(zero[i - 2] + zero[i - 1]) one.append(one[i - 2] + one[i - 1]) print('{} {}'.format(zero[num], one[num])) t = int(input()) for _ in range(t): fibonacci(int(input())) n 0 1 2 3 4 5 zero 1 0 1 1 2 3 one 0 1 1 2 3 5 n = 3, n 이 1, 2일때의 합과 같다 n = 4, 5 ... 계속 동일 zero, o.. 알고리즘 2022.06.29