BOJ 17283 I am Groot
https://www.acmicpc.net/problem/17283
시간 1초, 메모리 256MB
input :
-
중심 줄기의 길이 L (6 <= L <= 10,000)
-
비율 R(1 <= R <= 99)
output : -
중심 줄기를 제외한 나뭇가지의 총 길이의 합.(소숫점 이하는 버린다.)
조건 : -
나뭇가지는 2갈래로 갈라진다.
-
N번째 나뭇가지의 길이는 N - 1번째 나뭇가지의 길이의 R / 100 배이다.(소숫점 이하는 버린다.)
-
N번째 나뭇가지의 길이가 5 이하일 경우 N - 1번째 가지에서 성장을 멈춘다.
재귀 적으로 현재 몇 번째 분화하는 것인지 와 현재의 가지 길이를 입력받음
input : 몇번째 가지, 가지의 길이.
분화한 가지의 길이가 5이하이면 현재까지 계산한 나무의 길이를 반환.
나뭇가지는 1 -> 2 -> 4 -> 8 .... 2의 제곱으로 증가.
n-1 나뭇 가지 -> n 나뭇 가지로 갈때
분화된 나뭇가지의 전체 길이는 2^(n - 1) {(n - 1 나뭇가지 길이) 비율} 이고 이를 total 변수에 저장 하자.
재귀 쓸빠에 while문으로 돌리자.
종료 조건은 L 이 5 이하일 때 break.
정답 코드 :
import math
L = int(input())
R = int(input())
total = 0
cnt = 2
while 1:
L = int(L * (R / 100))
if L <= 5:
break
total += (cnt * L)
cnt *= 2
print(total)
중간에 if L < 5: 로 쓰는 바람에 한 번 틀렸다.
코드 세세히 보자...
Author And Source
이 문제에 관하여(BOJ 17283 I am Groot), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jsin2475/BOJ-17283-I-am-Groot저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)