AI 공부 도전기

[Baekjoon] 1748번 : 수 이어 쓰기 1 (Python, 구현, 수학)

 

     

 

 

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

 

1748번: 수 이어 쓰기 1

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

www.acmicpc.net

코드 링크

https://github.com/stellaluminary/Baekjoon

 

GitHub - stellaluminary/Baekjoon

Contribute to stellaluminary/Baekjoon development by creating an account on GitHub.

github.com

 

Python

 

메모리 초과 - 방법 1 - 코드 길이 71B

 

st = ''.join([str(i) for i in range(1, int(input())+1)])
print(len(st))

 

시간 초과 - 방법 2 - 코드 길이 74B

 

st = ''
for i in range(1, int(input())+1):
    st += str(i)
print(len(st))

 

방법 3 - 메모리 30840KB / 시간 68ms / 코드 길이 179B

 

입력받는 n의 길이에 따른 수학적 계산을 통해 해결했다.

 

n = input()
length = len(n)
res = length * (int(n) - 10**(length - 1) + 1)
length -= 1
while length:
    res += length * (10**length - 10**(length - 1))
    length -= 1
print(res)

 

방법 4 - 메모리 30840KB / 시간 68ms / 코드 길이 126B

 

방법 3의 간소화 

 

n = input()
res = 0
for i in range(1, len(n)):
    res += 9 * 10**(i-1) * i
res += (int(n)-10**(len(n)-1)+1)*len(n)
print(res)

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading