본문 바로가기
Algorithm

백준 16676번 <근우의 다이어리 꾸미기>

by seungh2 2022. 3. 11.

백준 알고리즘 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

댓글