개발 연습장/백준 문제풀이

[파이썬, Python] 백준 1748: 수 이어 쓰기 1

LooanCheong 2023. 6. 8. 11:31
반응형

문제

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

 

1748번: 수 이어 쓰기 1

첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.

www.acmicpc.net

코드

n = int(input())
len_n = len(str(n))
cnt = 0

for i in range(len_n - 1):
    cnt += 9 * 10 ** i * (i+1)
    
print(cnt + (n - 10 ** (len_n - 1) + 1) * len_n)

설명

단순하게 수를 구해서 푸는 문제라기엔 주어진 범위가 넓어서 규칙성을 찾아야 했다.

혼자서는 찾지 못해서 검색을 통해 해결했다.

n의 규칙은 이렇다.

자릿수 1개의 경우: 숫자는 1~9까지 존재, 모두 더하면 자리수가 9개
자릿수 2개의 경우: 숫자는 10~99까지 존재, 자릿수는 180개
자리수 3개의 경우: 숫자는 100~999까지 존재, 자리수는 2700개
...

자릿수에 따른 규칙을 발견할 수 있다.

따라서 반복문으로 자릿수에 맞는 개수를 우선 구해주고(1단위면 1번, 10단위면 2번...)
자리수 외의 나머지 숫자를 구해서 출력한다.

반응형