본문 바로가기
Algorithm/구현

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

by HANNI하니 2023. 1. 5.

1292번: 쉽게 푸는 문제 (브론즈1)

문제

 

1292번: 쉽게 푸는 문제

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

www.acmicpc.net

정답

이중 반복문 문제!

내 풀이 방식은 반복문을 사용안한 노가다 형태이다. 정답은 잘나오는데, 백준에 제출했더니 시간초과로 오답처리되었다. 악으로 깡으로 맞췄다는 거에 만족한다..

최근에 1193번을 풀었어서 입력값이 몇번째 줄에 몇번째 숫자인지 찾으려고 했다.

문제에 예제로 나온 것으로 설명해보겠다. 입력 3 7 / 출력 15

3은 2번째 줄 2번째 숫자이고, 7은 4번째 줄 1번째 숫자인 걸 먼저 찾고, 하나씩 경우를 따져서 더해줬다.

4번째 줄과 2번째 줄 사이 값들은 제곱으로 다 더해주는 형태로 해결했다. 완벽한 노가다!

 

[Python3] 백준 1193번 분수찾기

1193번: 분수찾기 (브론즈1) 문제 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 정답 몇 번째 line에 있는지 확인하고, 홀/짝에 따라 분모, 분자 오름/내림차순을 지정하는

rladuddms.tistory.com

# 내 정답 -> 시간초과로 오답
n = list(map(int,input().split()))
arr = []
answer = 0

# 입력값들이 몇번째 줄에 몇번째 숫자인지 찾기
line0 = 1
while n[0] > line0:
    n[0] -= line0
    line0 += 1 

line1 = 1
while n[1] > line1:
    n[1] -= line1
    line1 += 1

#경우에 따라 answer에 더해주기
if n[0] == line0:
    answer += line0
else:
    answer += line0*(line0-n[0]+1)

answer += line1*n[1]

# 중간에 있는 숫자들도 더해주기
line = line1-line0
while line != 1:
    answer += (line+1)*(line+1)
    line -= 1
    
answer

난 너무 코딩초보자라 저런 이중반복문을 보면 감탄만 나온다 ㅋㅋㅋㅋ

a와 b의 범위가 1000이기 때문에 len(arr)=1036이라 range(46)으로 설정한다. 아니면 입력받은 b+1까지 range로 설정해도 된다.

i를 range(i)만큼 만들어서 arr에 append하기

# 보통 사람들의 정답

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

arr = [0]
for i in range(46):
     for j in range(i):
    	arr.append(i)

print(sum(arr[a:b+1])

공부한 내용

1. 이중반복문 사용하기

2. 인덱싱 사용하기

아래 1번과 2번은 같은 코딩이다. 이왕이면 짧고 깔끔하게 쓰려고 노력하자!

인덱싱한 list에 sum 연산 가능하다.

# 1번
sum(arr[a:b+1])

# 2번
sum = 0
for i in range(a,b+1):
	sum += arr[i]
print(sum)

 


레퍼런스

  • 다른 정답 풀이
 

[ 파이썬(python) ] 백준 1292 - 쉽게 푸는 문제

📍 백준 1292 - 쉽게 푸는 문제 백준 1292 - 쉽게 푸는 문제 ⚡️ 나의 풀이 문제 이름은 쉽게 푸는 문제였는데 나는 어렵게 푼 문제였다. 구간의 시작과 끝을 기준으로 구간 합을 구해야 하기 때문

ywtechit.tistory.com

 

[백준 1292번] 쉽게 푸는 문제 - 파이썬

백준 1292번 풀이

velog.io

  • 깃허브 정답
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글