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을 더한 값, 처음 고양이를 생성한 경우를 더해준다.
    • 처음 시작할 때에만 생성마법을 사용하고 그 이후에 복제 마법을 사용하는 것이 효율이 좋다.