본문 바로가기
728x90

재귀8

[python] 백준 12919 A와 B 2 https://www.acmicpc.net/problem/12919 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net 문제 해결 처음에 S->T로 만드는 BFS 함수를 생각했다. 하지만 메모리초과, 시간초과 나오는 것을 보고 다른방법을 생각하게 되었다. 이전에 긴 문자열에서 짧은 문자열을 만드는 풀이가 생각이 났다. 역시 문자열을 만드는 것은 긴 문자열에서 짧은 문자열로 생각하는 것이 정답이다.(그래야 비교할 경우의 수가 줄어든다.) CODE S = str(input()).. 2023. 4. 5.
[python] 백준 17136 색종이 붙이기 https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net 문제 해결 여러가지 경우의 수를 계산해야한다. 재귀함수를 통해 모든 경우의 수를 계산해서 최소의 값을 구할 수 있다. 각 크기의 색종이가 5개이므로 5개를 넘어가면 더이상 그 색종이를 사용하지 않는다. CODE import sys input = sys.stdin.readline INF= sys.maxsize def solve(x, y, cnt): global ans if y >= 10: .. 2023. 4. 3.
[python] 백준 5639 이진 검색 트리 https://www.acmicpc.net/problem/5639 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 문제 해결 전위 순회(preorder)한 노드의 value 값을 리스트 안에 차례대로 받는다. 인덱스를 차례대로 키워가며 노드의 value 값이 이전보다 작으면 깊이를 늘리지 않고 오른쪽 자식 값으로 가는 규칙이 있다. 이 트리를 후위 순회(postorder)한 결과를 출력하는 것이 문제 인덱스를 이용하여 후위 순회 함수를 만들면 된다. 중간에 노드의 value 값이 이전보다 작아 더.. 2023. 3. 5.
[Python] 백준 11726 2Xn 타일링 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제해결 - 세로 길이는 2로 고정이라는 것에 주목하자. 그러면 가로길이가 1인 1번으로 한개 놓던가 가로길이가 2인 2번으로 2개 놓는 방법이 있다. 이를 보면 피보나치 수열 fib(n) = fib(n-1) + fib(n-2) 가 생각이 난다. CODE import sys input = sys.stdin.readline def fib(n): if n==1: return 1 elif n==2: return 2 retu.. 2022. 12. 22.
728x90