[백준] 1748번: 수 이어쓰기1 / Python / 브루트 포스

이다혜·2021년 7월 15일
0
post-custom-banner

수 이어쓰기 1

  • 문제
    1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.

    1234567891011121314151617181920212223...

    이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.

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

  • 출력
    첫째 줄에 새로운 수의 자릿수를 출력한다.

나의 풀이

N = 5
# i번째 인덱스의 원소는 자릿수가 i인 수들을 이어붙였을 때의 길이를 나타냄
# ex) 두자릿수 숫자들 10~99는 90개 있고, 총 길이는 90 * 2 = 180이 된다.
base_list = [0, 9, 90, 900, 9000, 90000, 900000, 9000000, 90000000]
base_list = [idx * num for idx, num in enumerate(base_list)]

# N이 x자리이면
x = len(str(N))
result = sum(base_list[:x]) #x - 1자리 숫자들의 총 길이를 구함
result += (N - 10 ** (x - 1) + 1) * x # 남은 숫자들의 총 길이를 더해줌
print(result)
profile
하루하루 성장중
post-custom-banner

0개의 댓글