본문 바로가기

🖥️ 오늘의 백준

백준 1292번 : 쉽게 푸는 문제 [Python]

오늘의 난이도 : 🥉브론즈 1

ㄷㅏ음 문제는 실버를 기약하며...

 

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

 

1292번: 쉽게 푸는 문제

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

www.acmicpc.net

 

요런 문제인데요

 

1 2 2 3 3 3 4 4 4 4 ... 이렇게 생긴 수열을 만들어주고 (list로)

슬라이싱을 사용해서 A번째에서 B번째까지를 더해줍니다. (sum함수로)

 

코드

A, B = map(int, input().split())

numList = []

for i in range(1, B+1): 
# B번째까지의 합을 구해야하므로 B개수만큼 존재해야함 
    for j in range(i):
        numList.append(i)

result = sum(numList[A-1:B]) # A-1 인덱스에서 B-1 인덱스까지를 의미

print(result)

 

  • 수열은 B개까지만 만들어줍니다. 그러므로 range(1, B+1) : 1~B라는 뜻
  • 슬라이싱해주기 
    • [start:end:step] : 시작할 값, 마지막값+1, 건너뛸 정도 (생략할 경우 1)
    • A번째 ~ B번째
      • numList[A-1:B] 이므로 A-1인덱스부터 B-1인덱스까지를 의미한다.
    • sum으로 슬라이싱한 구간 다 더해주기
      • sum() : ()안의 값들을 다 더해줌

 

 

 

끝~