백준 알고리즘

백준 - 1292 쉽게 푸는 문제 python 문제풀이 [Hellfer]

Hellfer 2024. 3. 10. 23:31
728x90

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

 

1292번: 쉽게 푸는 문제

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

www.acmicpc.net

🔷 알고리즘 분류 - 수학, 구현   난이도 - 브론즈 1

🔶문제 풀이 - 반복문을 이용한 풀이

n, m = map(int, input().split())  # n과 m을 입력받습니다.

x = 0  # 결과를 저장할 변수 x를 초기화합니다.
result = []  # 결과를 저장할 리스트 result를 초기화합니다.

# 1부터 m까지 반복합니다.
for i in range(1, m + 1):
    # i번째 수를 i번씩 result 리스트에 추가합니다.
    for j in range(i):
        result.append(i)

# n-1부터 m까지의 인덱스를 갖는 result의 원소들을 x에 더합니다.
for i in range(n - 1, m):
    x += result[i]

print(x)  # 결과 x를 출력합니다.

🔶문제 이해하기

1. 입력값이 아래와 같다고 가정해 보겠습니다.

 

3 7

 

n, m = map(int, input(). split())에 의해 n에는 3, m에는 7이 할당됩니다.


2. 변수 초기화


x = 0에 의해 변수 x는 0으로 초기화됩니다.


result = []에 의해 빈 리스트 result가 생성됩니다.


3. 이중 반복문을 통한 리스트 생성


첫 번째 반복문: for i in range(1, m + 1)에 의해 i는 1부터 7까지 반복됩니다.


두 번째 반복문: for j in range(i)에 의해 j는 0부터 i-1까지 반복됩니다.


result.append(i)에 의해 i를 result 리스트에 i번씩 추가합니다. (예: 1은 1번, 2는 2번, 3은 3번 추가됩니다.)


이 과정을 거치면 result 리스트는 [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7]이 됩니다.


4. 결과 계산


두 번째 반복문: for i in range(n - 1, m)에 의해 i는 2부터 6까지 반복됩니다.


x += result [i]에 의해 result 리스트의 i번째 원소를 x에 더합니다.


이 과정을 거치면 x의 값은 2 + 3 + 3 + 3 + 4 = 15가 됩니다.


5. 결과 출력


print(x)에 의해 x의 값인 15가 출력됩니다.

728x90