본문 바로가기
코딩테스트

99클럽 코테 스터디 13일차 TIL : 백준 27961번, 그리디 알고리즘

by fecu 2024. 11. 10.
728x90

 

1. 오늘의 문제

 

오늘 문제는 다소 쉬웠다.

 

더보기

문제

 

마법소녀인 마도카는 너무나도 고양이를 좋아하는 나머지 마법을 이용하여 고양이 N마리를 집에서 키우기로 결심했다!

마도카는 한 번의 행동에서 다음 2가지 마법 중 하나를 선택하여 사용한다. 처음에는 마도카의 집에 고양이가 존재하지 않는다.

  • 생성 마법: 고양이 1마리를 마도카의 집에 생성한다.
  • 복제 마법: 마도카의 집에 있는 고양이 일부 또는 전부를 대상으로 하여 복제한다. 즉, 만약 현재 마도카의 집에 고양이가 k마리 존재한다면, 0마리 이상 k마리 이하의 고양이를 마도카의 집에 추가할 수 있다.

마도카는 위의 2가지 마법을 적절히 사용하여, 최소의 행동 횟수로 마도카의 집에 정확히 N마리의 고양이가 있도록 만들고 싶다. 계산을 어려워하는 마도카를 위해 최소의 행동 횟수를 계산해주자!

 

2. 원리

 

고양이를 늘리는 최소의 방법은 복제 뿐이다.

 

따라서 고양이는 무조건 2의 n제곱으로 늘어난다.

 

고양이를 원하는 마릿수까지 만들기 위한 횟수를 구하려면 2의 n승과 비교한 뒤, 값이 더 크면 n을 리턴하면 끝이다.

 

3. 코드

 

a = int(input())
b = 0
if a == 0:
    print(0)
elif a == 1:
    print(1)
else :
    while a >= 2**(b - 1):
        b+=1
        if a ==2**(b - 1):
            print(b)
            exit()
        if a < 2**(b - 1):
            print(b)
            exit()

 

4. 느낀점

 

지금 제주도 여행중이지만 어떻게든 해보려고 글을 쓴다.

 

매일 과제를 하는건 쉬우면서도 정말 힘든 일인것 갗다

 

728x90