백준 알고리즘 16676번
https://www.acmicpc.net/problem/16676
16676번: 근우의 다이어리 꾸미기
첫 번째 줄에 근우의 연봉 최댓값을 의미하는 정수 N이 주어진다. (0 ≤ N ≤ 1,000,000,000)
www.acmicpc.net
16676번
입력으로 첫 줄에 근우의 연봉 최댓값을 의미하는 정수 N이 주어진다.
출력으로는 근우가 0부터 N까지 스티커로 표현하기 위해 구매해야 하는 스티커 팩의 최소 개수를 출력한다.
(스터커 팩은 0부터 9까지 스티커 1장씩 있다.)
문제 해결
이 문제는 조금만 생각하면 해결할 수 있다.
N이 0부터 9까지인 경우에는 스티커 팩이 1개가 필요하다. 이때 0도 스티커 팩이 1개 필요한 것을 잊지 말자.
N의 길이만큼 1인 수를 만들어서 그 수보다 N이 작다면 N의 길이 -1이 정답이고 N이 크거나 같다면 N의 길이가 정답이다.
왜냐면 스티커 팩 하나로 0부터 10까지 만들 수 있고 스티커 팩 2개로 11부터 110까지 만들 수 있다.
11을 만들기 위해서 1이 2개 필요하기 때문이다. 이렇게 같은 숫자가 반복되는 숫자를 만들기 위해서는 스티커 팩이 여러 개 필요한데 같은 숫자가 반복되는 숫자의 제일 첫 숫자는 모두 1로 이루어진 숫자이기 때문에 1로 이루어진 숫자들로 문제를 해결할 수 있다.
코드
N = input()
if int(N) == 0:
print(1)
else:
length = len(N)
chk = "1" * length
chk = int(chk)
if chk > int(N):
print(length - 1)
else:
print(length)
결과
728x90
'Algorithm' 카테고리의 다른 글
백준 1080번 <행렬> (0) | 2022.03.14 |
---|---|
백준 2437번 <저울> (0) | 2022.03.11 |
백준 11066번 <파일 합치기> (0) | 2022.03.10 |
백준 12849번 <본대산책> (0) | 2022.03.08 |
백준 1915번 <가장 큰 정사각형> (0) | 2022.03.05 |
댓글