본문 바로가기
반응형

백준알고리즘/재귀13

(Python/🥈4)24060번: 알고리즘 수업 - 병합 정렬 1 문제 출처:https://www.acmicpc.net/problem/24060 24060번: 알고리즘 수업 - 병합 정렬 1 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109) www.acmicpc.net 문제 풀이: 첫 번째 시도 import sys sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r') def merge_sort(list): n = len(list) if n = k: print(res[k-1]) else: print(-1) 답은 맞지만 시간 초과가 나온다 두 번.. 2022. 11. 12.
(Python/🥉2) 25501번: 재귀의 귀재 문제 출처:https://www.acmicpc.net/problem/25501 문제 풀이: import sys sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r') n = int(input()) def recursion(s, l, r): if l >= r: return 1,l elif s[l] != s[r]: return 0,l else: return recursion(s, l+1, r-1) def isPalindrome(s): return recursion(s, 0, len(s)-1) for i in range(n): isp, recu =isPalindrome(input().strip("\n")) print(isp, recu+1) # 0부터.. 2022. 11. 5.
(Python/🥈1)백준 알고리즘 11729번: 하노이 탑 이동 순서 문제 출처:https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 알고리즘의 벽이라고 불리는 하노이의 탑문제이다.. n = 2 인 경우에는 1+2 =3 n = 3 인 경우에는 1+2+4 = 7 n = 4 인 경우에는 1+2+4+8 = 15 총 이동횟수는 2^n - 1 이다 이런식으로 옮긴횟수 공식은 쉽게 찾았지만 수행 과정 출력하는것에 애를 먹었다. 풀이: def hanoi(N,i,j,via): # if N == 1: print(i,j) .. 2022. 5. 19.
(Python/🥈1)백준 알고리즘 2447번: 별 찍기 - 10 문제 출처:https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 풀이: def stars(n): array = [] for i in range(3*len(n)): if i//len(n) ==1: # 몫이 1일때 가운데 3*3 부분 array.append(n[i%len(n)] + " " * len(n) + n[i%len(n)]) # i 2일때 else: # 나머지가 1일때 array.append(n[i%len(n)] * 3 .. 2022. 5. 19.
(Python/🥈5)백준 알고리즘 17478번: 재귀함수가 뭔가요? 문제 출처: https://www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 풀이: def a(m): print("_" * (4 * (n - m)) + '"재귀함수가 뭔가요?"') if not m: print("_" * (4 * (n - m)) + '"재귀함수는 자기 자신을 호출하는 함수라네"') print("_" * (4 * (n - m)) + "라고 답변하였지.") return print("_" * (4 * (n - m)) + '"잘 들어보게. 옛날옛날 .. 2022. 5. 18.
(Python/🥉2)백준 알고리즘 10870번: 피보나치 수 5 문제 출처:https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이: N = int(input()) list = [0,1] for i in range(2,N+1): a = list[i-1] + list[i-2] list.append(a) print(list[N]) 재귀 풀이: def solution(x): if x 2022. 5. 17.
반응형