[백준] 9934 : 완전 이진 트리 (파이썬)
·
Algorithm/Recursion
트리, 재귀 문제https://www.acmicpc.net/problem/9934접근 방식31 6 4 3 5 2 7 주어진 입력과 그래프의 형태를 비교해보면, 그래프를 중위 순회한 결과가 입력 배열로 주어졌다는 사실을 알 수 있다.따라서, 중위 순회 결과를 기반으로 트리를 재구성한 후, 각 깊이에 위치한 노드들을 출력해주면 된다.💡 풀이코드 (성공)import sys n = int(sys.stdin.readline())arr = list(map(int, sys.stdin.readline().split()))graph = [[] for _ in range(n)]depth = 0def recursive(start, end, depth): if start >= end : return mid = ..
[백준] 10942 : 팰린드롬? (파이썬)
·
Algorithm/Recursion
DP / 재귀+ Memorization 문제https://www.acmicpc.net/problem/10942 접근 방식재귀 + Memorization 기법을 활용하여 문제를 풀었다. 한 수열에 대해 질문의 개수가 M(1 ≤ M ≤ 1,000,000)번 주어진다. 질문의 개수가 들어올 때마다 재귀호출하여 값을 구하는 것은 매우 비효율적(반복됨)이다.따라서, memo에 기록해둔 값이 있다면 dfs를 재귀호출하지 않고, memo에 기록해둔 값을 바로 리턴하도록 구현하였다. 💡 풀이코드 (성공)import syssys.setrecursionlimit(10**9)# 7'''1 -> [[1][-1][-1][-1][-1][-1][-1]] 1,2,3,4,5,6,72 -> [[1][-1][-1][-1][-1][-1]..
[백준] 2448번 : 별찍기 - 11 (파이썬)
·
Algorithm/Recursion
재귀, 분할정복 문제https://www.acmicpc.net/problem/2448 접근 방식 별은 위와 같이 n // 2로 분할해도 같은 형상을 갖는다. 즉, 특정 패턴이 반복되어 나타내는 것을 볼 수 있다. 이는 전형적인 분할정복 문제의 특징이다. 분할정복 문제는 재귀로 풀면 쉽게 풀리므로 나 또한 재귀로 접근해겠다.  💡 풀이코드 (성공)import sysn = int(sys.stdin.readline())graph = [[' '] * n * 2 for _ in range(n)]def star(n, r, c): if n == 3: graph[r][c] = '*' for j in range(c - 1, c + 2): if j == c: contin..
[백준] 5639번 : 이진검색트리 (파이썬)
·
Algorithm/Recursion
재귀 문제https://www.acmicpc.net/problem/5639  풀이코드  (실패, 시간초과)# 무한입력을 위해 try - except 추가# 25%에서 시간초과 코드 import syssys.setrecursionlimit(10**9)class Node: def __init__(self, data): self.data = data self.left = None self.right = Nonedef insert(root, data): if root == None: return Node(data) else: if root.data > data: # 왼쪽 root.left = insert(root..
[백준] 1074번 : Z (파이썬)
·
Algorithm/Recursion
재귀, 분할정복 문제 https://www.acmicpc.net/problem/1074 풀이코드  (실패1, 메모리초과)import sys N, r, c = map(int, sys.stdin.readline().split())arr = [[-1] * 2 ** N for _ in range(2 ** N)]def visit(n, i, j): global cnt, r, c if n == 1: arr[i][j] = cnt cnt += 1 else: if arr[r][c] != -1 : return newSize = n // 2 visit(newSize, i, j) visit(newSize, i, j + newSize) ..
_은선_
'Algorithm/Recursion' 카테고리의 글 목록