반응형

1292

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

 

1292번: 쉽게 푸는 문제

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

www.acmicpc.net

[정답1]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys
a, b = map(int, sys.stdin.readline().split())
= 0
result = 0
for i in range(46):
  for j in range(i):
    c += 1
    if c >= a:
      result += i
    if c == b:
      break
  if c == b:
    break
print(result)
cs

.

.

.

[풀이1]

B<=1000이라는 조건이 있는데

수열이 1, 2, 2, 3, 3, 3, ... , 45, 45, 45, 45....에서 1000번째를 맞이한다.

따라서 for문 한계점을 46으로 설정한다.

그 후 평범한 반복문.

a번째부터 더하고 b번째에 break 한다.

.

.

.

[정답2]

1
2
3
4
5
6
7
import sys
a, b = map(int, sys.stdin.readline().split())
= []
for i in range(46):
  for j in range(i):
    c.append(i)
print(sum(c[a-1:b]))
cs

.

.

.

[풀이2]

파이썬의 기능을 이용하면 간략화할 수 있다.

모든 수를 배열에 집어넣은 후 sum함수로 값을 출력한다.

푼 사람들의 정답을 참조했다.

 

p.s.

brute force로 해보고 안되면 시간을 줄일 수 있는 알고리즘을 생각해보자.

반응형

+ Recent posts