[백준 알고리즘] 16987번: 계란으로 계란치기 (Python / 파이썬)
·
알고리즘/백준
문제 링크 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱 www.acmicpc.net 문제 접근 치는 계란과 맞는 계란을 잘 다뤄야 한다. 치는 계란은 항상 왼쪽 첫 번째 계란이고, 이 계란이 깨지면 다음 계란이 치는 계란이 된다. 재귀를 하면서 배열 자체에서 깨진 계란을 삭제해 버리면 복잡해지므로 알고리즘 내에서 조건으로 깨짐 여부를 체크하고 그에 따라 처리해준다. 정답 코드 # 16987번: 계란으로 계란치기 import sys def count(eggs): cnt = 0 for i in eggs: if i[0]
[백준 알고리즘] 17478번: 재귀함수가 뭔가요? (파이썬 / Python)
·
알고리즘/백준
문제 접근 반복되지 않는 출력문 - "어느 한 ~ 물었다." 반복되는 출력문 - "재귀함수가 뭔가요?" / 답변 반복된 출력이 변경되는 부분 - 끝까지 갔을 때 답변이 "재귀함수는 자기 자신을 호출하는 함수라네"로 특수함 -> 입력값을 매개변수로 하는 함수에 매개변수에 -1을 한 재귀함수를 호출한다. 매개변수가 0이 되었을 때 답변을 다르게 하도록 구현 정답 코드 import sys def what(t): line = "____" if t >= 1: print(line*(n-t) + '"재귀함수가 뭔가요?"') print(line*(n-t) + '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.') print(line*(n-t) + '마을 사람들은 모두 그 선인에게 수..
[백준 알고리즘] 10870번: 피보나치 수 5 (파이썬 / Python)
·
알고리즘/백준
문제 접근 피보나치 수열은 for문으로도 구현 가능하지만 재귀함수로도 구현 가능하다. Fn = Fn-1 + Fn-2 (n ≥ 2)를 활용하면 될 것 같다. 정답 코드 import sys def fibonacci(n): if n == 0: return 0 elif n == 1 or n == 2: return 1 else: return fibonacci(n-1) + fibonacci(n-2) n = int(sys.stdin.readline()) print(fibonacci(n)) 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + ..