Algorithm/Problems

99클럽 코테 스터디 17일차 TIL + 그리디

공부좀하시졍 2024. 11. 14. 00:24

https://www.acmicpc.net/problem/31926

import sys
input = sys.stdin.readline

n = int(input())
cnt = 8 # 처음 daldidalgo 만들 때 쓰이는 횟수
i = 1
while True:
    if n - 2**i == 0:
        cnt = cnt + i + 2
        break
    elif n - 2**i < 0:
        cnt = cnt + i + 1
        break
    i += 1

print(cnt)
  • 처음 daldidalgo가 만들어 질 때 d/a/l/d/i/dal/g/o 총 8번 즉 8초가 걸린다.
  • n = 2일 때
    • 8번 + daldidalgo (복사) + daldida (복사) + n 으로 총 8 + 1 +1 +1
  • n = 3일 때
    • 8번 + daldidalgo (복사) + daldidalgo daldida (복사) + n으로 총 8 + 1 + 1 + 1
  • n = 4일 때
    • 8번 + daldidalgo (복사) + daldidalgo daldidalgo (복사) + daldida (복사) + n으로 총 8 +1 +1 +1 +1
  • n = 5일 때
    • 8번 + daldidalgo (복사) + daldidalgo daldidalgo (복사) + daldidalgo daldida (복사) + n 으로 총 8 + 1 + 1 + 1 + 1
  • 이렇게 n이 짝수 일 때 daldida 과 n을 각각 복사 및 추가로 2를 더해주어야 하고 n이 홀수 일 때 daldidalgo daldida 가 한번에 복사 가능하기 때문에 n만 추가해주면 되므로 1을 더해주어야 한다.