[백준/Python] 1292 - 쉽게 푸는 문제

orangesnail·2025년 3월 20일

백준

목록 보기
77/169

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


초기 코드

a, b를 입력받기 -> b번째 수까지 규칙대로 리스트에 추가 -> 슬라이싱 이용해 sum() 출력하는 방식으로 구현했다.

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

nums = []
for i in range(1, b + 1):
    for _ in range(i):
        nums.append(i)

print(sum(nums[a - 1 : b]))

코드 개선하기

전체 수열의 a번째부터 b번째까지만 필요한데 굳이 리스트를 만들어서 첫번째까지 다 추가하는 것은 메모리 낭비이다...

따라서 리스트를 사용하지 않게끔 코드를 바꾸어봤다.

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

total, count = 0, 0
num = 1

while count < b:
    for _ in range(num):
        count += 1

        if count >= a:
            total += num
        if count == b:
            break
    num += 1

print(total)

이렇게 하면 몇번째 숫자인지 num 변수로 카운트하다가 a부터 b까지만 누적합을 구하기 때문에 더 효율적이다!

profile
초보입니다. 피드백 환영합니다 😗

0개의 댓글