jyamethyst21 님의 블로그

백준 1292번- '쉽게 푸는 문제' (PYTHON 풀이) 본문

CODING 💻

백준 1292번- '쉽게 푸는 문제' (PYTHON 풀이)

jyamethyst21 2026. 1. 26. 15:12

문제:

 

숫자를 1223334444... 이런식으로 각 수와 동일한 개수로 수열을 만들었을 때, 시작 구간과 종료 구간 사이의 값을 전부 더해서 출력하면 되는 문제이다.

 

풀이:

a, b = map(int, input().split())

arr = []
x = 1
while len(arr) < b:
    arr.extend([x] * x)
    x += 1
print(sum(arr[a-1:b]))

처음에는 범위만큼 문자열로 변환해서 각 자릿수를 int로 바꾼 뒤 계산하는 것을 생각했는데 이 경우 두 자릿수가 됐을 땐 의도대로 계산이 되지 않는 문제가 발생하고, 필요없는 공간까지 할당해서 메모리를 잡아먹는다.

어떤 방식으로 해결할지 감이 안 잡혀서 서치를 하니 extend를 활용하는 것을 확인했다. 또한, while문 안에 배열의 크기보다 종료 지점이 작을 경우에만 수열을 만들어서 필요없는 값까지 할당하는 것을 방지하였다. 이렇게 x 값 즉, 개수를 의미하는 것을 1씩 늘려주면서 조절하고 마지막에 b보다 배열의 수가 커질 경우 while문을 탈출해서 시작 지점과 종료 지점까지의 값을 모두 더해 출력하면 된다.