[백준/파이썬] 16676번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 16676번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
곧 2018년이 끝나고, 2019년이 온다.
근우는 2019년에는 꼭 다이어리를 쓰기로 했다. 하지만, 처음 써보는 다이어리에 쓸 내용이 없어 고민하던 중 자신의 목표 연봉을 다이어리 앞에 쓰기로 했다.
다이어리를 쓰는 사람은 알겠지만 예쁜 다이어리의 핵심은 스티커다. 그렇기 때문에 근우는 목표 연봉을 손으로 쓰지 않고, 스티커로 붙이려고 한다. 목표연봉이 100이라면 [1] [0] [0]과 같이 붙이는 것이다. [1]이란 1이 써져있는 스티커로, 다른 숫자에 대해서도 동일한 규칙이 적용된다.
근우는 자신의 연봉 최댓값이 N임을 안다. 그렇기에 근우는 0부터 N까지의 수를 하나씩 스티커를 통해 모두 표현하고자 한다. 최댓값 N이 10이면 만드는 과정은 다음과 같다.
-
스티커 더미에서 [0] 하나를 가져와 0을 표현한다 ([0]). 이후 사용한 스티커 [0]을 스티커 더미로 되돌린다.
-
스티커 더미에서 [1] 하나를 가져와 1을 표현한다 ([1]). …
입력 요약
첫 번째 줄에 근우의 연봉 최댓값을 의미하는 정수 N이 주어진다. (0 ≤ N ≤ 1,000,000,000)
출력 요약
첫 번째 줄에 근우가 0부터 N까지 스티커로 표현하기 위해 구매해야 하는 스티커 팩의 최소 개수를 출력한다.
코드
n=input()
r=len(n)
s='1'*r
if n=='0':r=1
elif int(n)<int(s):r-=1
print(r)
설명
핵심은 구현 관점에서 곧 2018년이 끝나고, 2019년이 온다.
근우는 2019년에는 꼭 다이어리를 쓰기로 했다. 하지만, 처음 써보는 다이어리에 쓸 내용이 없어 고민하던 중 자신의 목표 연봉을 다이어리 앞에 쓰기로 했다. …를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기