본문 바로가기

Python(알고리즘,문제풀이)/BOJ(Bronze II)

백준 / 1673번 / 치킨 쿠폰 / 수학,구현

728x90

📚문제

출처 : 백준 1673번 (https://www.acmicpc.net/problem/1673)


📝풀이

# 1673번 치킨 쿠폰
while True:
    try:
        n,k = map(int,input().split())
        chicken = n 
        stamp = n
        service = 0
        
        while stamp // k > 0:
            service += stamp // k
            stamp = (stamp // k) + (stamp % k)
        
        print(chicken + service)
    except EOFError:
        break

전에 비슷한 문제를 푼 기억이 있어서

블로그 글을 검색해보니

프로그래머스 - 코딩테스트 입문에서 한번 비슷한 문제를 풀었었다

물론 디테일한 조건들은 조금씩 다르기 때문에

새로 다시 풀었다

 

프로그래머스에서 풀었을 때는 꽤 어려웠던 것 같은데

이번에는 천천히 손으로 대입해보고 풀어본 것을 코딩으로 구현해보니

많이 어렵진 않았다

(초반에 조금 복잡하게 코드를 짜서 시간초과에 몇번 걸리긴 했다...)

 

그리고 주의해야 할 것은

주로 마지막 예제(100 , 5)를 가지고 풀었는데

이 경우에는 

치킨쿠폰(100)이 치킨 쿠폰 한장으로 바꿔주는 도장 개수(5)로 딱 나눠떨어진다

stamp = (stamp // k) + (stamp % k)

그러다보니 이 코드에서

저 뒤에 (stamp % k)를 붙여주는 것을 생각못했다

 

이걸 깨닫고 코드를 변경한 덕분에 풀이 완료했다

 

728x90