현제의 현재이야기
[백준/python] 1748 - 수 이어 쓰기 1 본문
첫번재 try
n = int(input())
a = [
str(i + 1)
for i in range(n)
]
b = "".join(a)
print(len(b))
두번째 try
n = input()
leng = len(n)
leng_minus = leng - 1
output = 0
for i in range(leng - 1):
output += 9 * (10 ** i) * (i + 1)
output += (int(n) - (10 ** leng_minus) + 1) * leng
print(output)
알고리즘:
- 우선 자연수 n을 문자로 받고 len 함수로 자리 수를 얻는다.
- 자연수 n의 자리 수보다 낮은 자리 수들의 길이를 모두 합한다.
- 전 자리 길이들 다 더한거에 해당 자리 수의 나머지 부분에 길이를 곱한다
예를 들어 120을 얻는다 하면
leng = 3이고
1의 자리 9 * (10 ** 0) * (0 + 1) ← 해당 자리수의 길이 해서 9
10의 자리 9 * (10 ** 1) * (1 + 1) 해서 180
여기서 output은 일단 두 개를 더한 189이고 여기에
나머지 (120 - (10 ** 2) + 1)← 나머지 부분 * 3← 길이 을 하면
252가 나온다.
'algorithm' 카테고리의 다른 글
[백준/python] 2003 - 수들의 합 2 (0) | 2022.06.25 |
---|---|
[백준/python] 2531 - 회전 초밥 (0) | 2022.06.25 |
[백준/python] 11650 - 좌표 정렬하기 (0) | 2022.06.25 |
[백준/python] 2747 - 피보나치 수열 (0) | 2022.06.25 |
[백준/python] 2941 - 크로아티아 알파벳 (0) | 2022.06.25 |
Comments