공부하기/백준

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

XEV 2023. 2. 28. 23:44

파이썬 백준 1292번

브론즈 1

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

 

1292번: 쉽게 푸는 문제

첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다.

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 수학, 구현

 

 

 

 

 

문제 풀기

변수로 selected_num 와 count_down 를 두어 selected_num 로 1, 2, 3 단계로 증가하는 위치를 표시하여 그 수를 빈 리스트에 저장하되, count_down 으로 저장해야 할 숫자의 개수를 지정한다. 이렇게 [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, ... ] 수열의 리스트를 형성하고, 입력되어진 구간에 대한 그 모든 수들을 for loop 을 통해 합을 구한다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline


def fnOneTwoTwoThreeThreeThree():
    selected_num = 1
    count_down = 1
    for i in range (2_000):
        if count_down == 0:
            selected_num += 1
            count_down = selected_num
            continue
        else:
            num_ls.append(selected_num)
            count_down -= 1
    # print(num_ls)  ## TEST PRINT.

def fnSumBetween(a, b):
    total_sum = 0
    for i in range (a, b  + 1):
        total_sum += num_ls[i]
    print(total_sum)


if __name__ == "__main__":
    a, b = map(int, inputdata().split())
    num_ls = [0]
    
    fnOneTwoTwoThreeThreeThree()
    
    fnSumBetween(a, b)