반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 1748번 수 이어 쓰기 1 파이썬(Python)

1) 문제번호 : 1748번

 

2) 문제 출처

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

 

1748번: 수 이어 쓰기 1

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

www.acmicpc.net

 

2. 문제

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

1234567891011121314151617181920212223...

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

 

 

3. 제약사항


4. 입력

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

 

5. 출력

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

 

6. 풀이

- 맨 처음에는 숫자를 str로 변형하여 len을 더하려고 했지만 시간초과가 났다.

- 그래서, 규칙을 찾았는데 1부터 9까지의 자리수의 합은 9, 10부터 99까지의 자리수의 합은 90, 100부터 999까지의 자리수의 합은 900 이렇게 값이 변한다.

- 아래의 코드처럼 규칙을 적용하면 된다.

 

7. 소스 코드

import sys
input=sys.stdin.readline

#숫자 N
N = int(input())

# N의 길이
length_N = len(str(N))

count = 0

for i in range(length_N-1) :
    count += 9 * 10 ** i * (i+1)

print(count + (N - 10**(length_N-1) + 1)*length_N)




 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기