[ 문제 ] 백준 알고리즘 2292 (벌집) - python
> https://www.acmicpc.net/problem/2292
주어진 N에 대하여
N : 1 / 2 ~ 7 / 8 ~ 19 / 20 ~ 37 / ...
갯수 : 1개 / 6개 / 12개 / 18개 / ...
출력 : 1 / 2 / 3 / 4 / ...
1을 제외하고 +6개씩 누적되어 늘어나는 규칙을 보인다.
풀이 방법이 떠오른 건 2가지이다.
While문 이용 & 재귀 함수 이용
1. While문 이용
1일 때 조건을 설정하고 더해가도 되지만, 변수가 하나 더 필요할 것 같아서 N에서 6씩 누적해 빼가는 방식을 선택했다.
[ Code ]
N = int(input())
cnt = 1
while N > 1:
N -= (6 * cnt)
cnt += 1
print(cnt)
2. 재귀 함수 이용법
1을 제외하고 규칙적으로 증가하기 때문에, 탈출 조건을 잘 설정해주면 충분히 간단한 재귀로 해결이 가능하다.
python에서는 재귀함수가 깊어지면 런타임 에러가 발생할 수 있으므로 깊이 제한을 늘려주는 것이 필요하다.
[ Code ]
import sys
# Python의 경우, 재귀함수 깊이 제한 늘리기 필요
sys.setrecursionlimit(10**5)
N = int(input())
def bee_house(N, cnt):
if N <= 1:
print(cnt)
return
else:
bee_house(N-(6*cnt), cnt+1)
bee_house(N, 1)
728x90
'백준 알고리즘(BOJ)' 카테고리의 다른 글
백준 알고리즘 2869 (달팽이는 올라가고 싶다) - python (0) | 2019.10.15 |
---|---|
백준 알고리즘 1011 (Fly me to the Alpha Centauri) - python (0) | 2019.10.15 |
백준 알고리즘 1193 (분수찾기) - python (0) | 2019.10.15 |
백준 알고리즘 2839 (설탕 배달) - python (0) | 2019.10.15 |
백준 알고리즘 1712 (손익분기점) - python (0) | 2019.10.15 |
댓글