본문 바로가기

CodingTest/Baekjun Online Judge

(111)
[ BOJ / 파이썬 ] 10870 피보나치 수 5 / 제출 1 / import sys input = sys.stdin.readline n = int(input()) def fibo(n): if n == 0: return 0 if n == 1: return 1 return fibo(n-1) + fibo(n-2) print(fibo(n)) : 워낙 베이직한 문제라 크게 어려울 것 없이 풀이했습니다.
[ BOJ / 파이썬 ] 1992 쿼드트리 / 제출 1 / import sys input = sys.stdin.readline n = int(input()) board = [list(input()) for _ in range(n)] def quadtree(startX,startY, endX, endY): print('(') compress = board[0][0] canCompress = True input() for i in range(startX, endX): for j in range(startY, endY): print(board[i][j], end="") if compress != board[i][j]: canCompress = False print("") if endX - startX
[ BOJ / 파이썬 ] 1991 트리 순회 재귀 진짜 너무 안 된다. 머리가 안 도는건가. https://fre2-dom.tistory.com/231 [baekjoon] 백준 1991번(파이썬): 트리 순회 문제 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름 fre2-dom.tistory.com 라고 우울해했었으나, 저녁 먹고 재귀 몇 문제 더 보고 다시 오니까 이해가 된다. 다시 으쌰으쌰해서 풀어봤다. / 제출 1 / import sys input = sys.stdin.readline n = int(input()) tree = {} start ='' for i in range(n): no..
[ BOJ / 파이썬 ] 1074 Z / 제출 1 / import sys input = sys.stdin.readline n, r, c = map(int, input().split()) def findOrderZ(n, r, c): if n == 0: return 0 half = 2**(n-1) if r < half and c < half: return findOrderZ(n-1, r, c) if r < half and half
[ BOJ / 파이썬 ] 11729 하노이 탑 이동 순서 어떤 분이 통곡의 하노이 탑이라고 적었던데 동의한다. 나는 왜 이 문제가 그 어떤 문제보다 이해가 안 되었을까.. 다행히 널리 알려진 문제라 설명이나 풀이가 많아 엄청 많이 찾아보고 각 설명의 핵심 포인트가 모여 이해 가능하게 정리되었다. 처음 접한 설명 https://blog.encrypted.gg/943?category=773649 [실전 알고리즘] 0x0B강 - 재귀 안녕하세요, 재귀 파트를 시작하겠습니다. 지금 자신있게 말할 수 있는게 있는데 이 파트가 정말 어려울 것입니다. 물론 이전의 내용들 중에서도 군데군데 어려운게 있었겠지만 이번 단원에서 blog.encrypted.gg 1. 재귀에 대해 다시 생각하자. 재귀는 절차지향적인 연산흐름과 떨어뜨려놓아야 한다. 사고를 바꿔야 쉽게 다가올 것. 2..
[ BOJ / 파이썬 ] 1697 숨바꼭질 / 제출 1 / from collections import deque n, k = map(int, input().split()) array = [0] * 1000001 q = deque([n]) def bfs(): while q: x = q.popleft() if x == k or array[k] != 0 : return array[k] if 0
[ BOJ / 파이썬 ] 4179 불! / 제출 1 / from collections import deque import copy r, c = map(int, input().split()) board = [list(input()) for _ in range(r)] # 상 우 하 좌 dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] jihoonBoard = copy.deepcopy(board) fireBoard = copy.deepcopy(board) jihoonStart = [] fireStart = [] for x in range(r): for y in range(c): if board[x][y] == 'J': jihoonBoard[x][y] = 1 fireBoard[x][y] = 0 jihoonStart = [(x, y)..
[ BOJ / 파이썬 ] 7576 토마토 / 풀이 1 / from collections import deque m, n = map(int, input().split()) tomatoes = [list(map(int, input().split())) for _ in range(n)] dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] ripped = [[False] * m for _ in range(n)] q = deque([]) day = 0 def bfs(q): new_q = deque([]) while q: x, y = q.pop() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0
[ BOJ / 파이썬 ] 2178 미로 탐색 / 제출 1 / 첫 제출에 틀렸습니다. 가 나와서 당황했었다. 잘 .. 한 것 같은데 뭐지.. 복사하면서 줄 바꿈 등이 잘 못 옮겨졌었던 것이었습니다. 동일 소스코드를 줄정렬한 것이 아래 코드입니다. / 제출 2 / ### from collections import deque n, m = map(int, input().split()) board = [list(map(int, input())) for _ in range(n)] visited = [[False] * m for _ in range(n)] visited[0][0] = True q = deque([[0, 0]]) # 하 우 상 좌 dx = [1, 0, -1, 0] dy = [0, 1, 0, -1] # n-1, m-1 도착할 때까지 최단거리 whi..
[ BOJ / 파이썬] 1926 그림 / 제출 1 / from collections import deque #세로, 가로 n, m = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(n)] dx = [1, 0, -1, 0] dy = [0, -1, 0, 1] visited = [[False]*m for _ in range(n)] q = deque([]) def bfs(): cnt = 0 while q: cnt += 1 x, y = q.pop() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0