본문 바로가기

Baekjoon

[Baekjoon]백준 1568 새(브론즈 2) - Python

문제설명
예제

문제를 살펴보면 새가 노래를 부르게 되는데 해당 새는 1, 2, 3...처럼 숫자를 증가하며 노래를 부른다

그리고 노래를 부를 때 말하는 숫자만큼 나무에 앉은 새가 날아가게 된다

단, 노래를 부르는 타이밍에 해당 숫자보다 나무에 앉아있는 새가 더 작다면 1로 초기화하여 다시 노래를 부른다

즉, 4마리가 남아있을때 5를 부를 타이밍이라면 1을 부른다는 것이다

 

해당 조건을 만족하기 위해 while bird_num > 0이라는 조건을 사용하였다 bird_num이 0이 될 때 해당 while문이

실행되지 않아야 하므로 > 를 사용하였다 이후 bird_num과 sing_num을 비교하여 sing_num이 더 큰지 확인한다

만약 더 크다면 sing_num을 1로 초기화한 후에 나머지 동작을 하면 된다

나머지 동작의 경우 걸리는 시간 측정, sing_num 증가, bird_num 최신화를 각각 해주면 된다

import sys
input = sys.stdin.readline

bird_num = int(input())
sing_num = 1
time = 0
while bird_num > 0:
    if bird_num < sing_num: # 현재 나무에 앉아있는 새의 수가 지금 불러야하는 수보다 작은 경우
        sing_num = 1 # 1로 초기화
    bird_num -= sing_num
    sing_num += 1
    time += 1
        
print(time)