본문 바로가기
728x90
반응형

분류 전체보기140

[백준] 1991번: 트리 순회 - python https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 아이디어 인덱스 값이 문자열이기 때문에 dict 형태로 저장한다. 그 후 학교에서 배운 전위, 중위, 후위순회로 DFS로 탐색을 진행하면서 출력을 뽑아낸다. n = int(input()) tree = {} for i in range(n): root, left, right = input().split() tree[root] = [left, right] def preorder(v): if .. 2024. 4. 9.
[백준] 11725번: 트리의 부모 찾기 - python https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 아이디어 인접행렬로 값을 저장 후 dq를 생성한 뒤 루트트리 1을 집어넣고 BFS로 진행한다. 그 후 펼쳐나가면서 answer에 pop한 now를 집어넣으면서 전체를 탐험. from collections import deque n = int(input()) graph = [[] for _ in range(n+1)] visited = [0] * (n+1) answer = [0] * (n+1) for i in range(n-1): a, b = map(int, in.. 2024. 4. 9.
[백준] 15666번: N과 M (12) - python https://www.acmicpc.net/problem/15666 15666번: N과 M (12) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 드디어 마지막 N과 M 시리즈. 배우는게 많은 시리즈였다. 아이디어 중복제거 -> 인덱스 반환 -> 재귀 def DFS(L, s): if L == m: for i in range(m): print(res[i], end=" ") print() else: remember = 0 for i in range(s, n): if remember != arr[i]: res[L] = arr[i] rememb.. 2024. 4. 9.
[백준] 15665번: N과 M (11) - python https://www.acmicpc.net/problem/15665 15665번: N과 M (11) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 아이디어 중복을 허용하지 않고 사전 순으로 진행. 아까와 부분집합과는 다르게 뿌리를 펼치면서 상태트리 값이 중복인지만 체크하면 됨으로 remeber 변수에 arr[i]을 저장시켜 중복을 제거할 수 있도록 설계. def DFS(L): if L == m: for i in range(m): print(res[i], end=" ") print() else: remember = 0 for i in ra.. 2024. 4. 9.
728x90
반응형