Algorithm/Problems
99클럽 코테 스터디 13일차 TIL + 그리디
공부좀하시졍
2024. 11. 10. 00:43
https://www.acmicpc.net/problem/27961
import sys
input = sys.stdin.readline
n = int(input())
answer = 0
cat = 1
if n == 0:
print(0)
elif n == 1:
print(1)
else:
while cat != n:
if cat >= n - cat: # 고양이 수가 n-cat보다 클경우 > 4마리 있는데 n이 6마리일 때
cat += n - cat
answer += 1
else: # 고양이 수가 n-cat보다 작을경우
cat += cat
answer += 1
print(answer+1)
- 처음에는 어떻게 해줘야 할지 감이 잡히지 않았다.....
- n이 0이나 1일 때는 따로 빼주고 cat이 n과 같을 때 까지 반복문을 진행했다.
- 현재 있는 고양이 수가 n-cat, 즉 n이 되기까지 남은 고양이 수 보다 큰 경우와 그렇지 않은 경우로 나누었다.
- while문이 끝나면 구한 answer값에 1을 더한 값, 처음 고양이를 생성한 경우를 더해준다.
- 처음 시작할 때에만 생성마법을 사용하고 그 이후에 복제 마법을 사용하는 것이 효율이 좋다.