코딩

[BOJ] 백준 1790 수 이어 쓰기2 Python

척척석사아님 2023. 10. 27. 11:28
728x90
#1790번 수 이어쓰기 2
import sys
import math
input = sys.stdin.readline

N,k = map(int,input().split())

a = len(str(N))
length_N = 0

#출력 가능인가 판정#
if a == 1:
    length_N += N
else:
    for i in range (1,a+1):
        length_N += 9 * (10 ** (i-1)) * i
    length_N += (N - (10 ** a) + 1) * a

#몇번째 digit에 포함되는지 확인
digit = 1
length = 1
while True:
    if length <= k and k < length + 9 * digit * (10 ** (digit-1)) :
        break
    else:
        length += 9 * digit * (10 ** (digit-1))
        digit += 1
#판정 후 계산#
if k <= length_N:
    for i in range (1,digit):
        k -= 9 * (10 ** (i-1)) * i
    m = 0
    while True:
        if m * digit + 1 <= k and k <= (m + 1) * digit:
            break
        else:
            m += 1
    b = k % digit
    c = 10 ** (digit-1) + (m)
    print(str(c)[b-1])

else:
    print(-1)

Pypy로 풀었네요. 파이썬으로는 실행시간에 부족한게 있었나봅니다.