파이썬/코딩테스트
[Do-it 코딩 테스트] 010.최솟값 찾기1(11003)
거북이07
2023. 11. 4. 23:26
문제
https://www.acmicpc.net/problem/11003
11003번: 최솟값 찾기
N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다.
www.acmicpc.net
코드
내가 작성한 코드
num1, num2 = map(int, input().split())
arr = list(map(int, input().split()))
result = []
for i in range(num2 - 1):
arr.insert(0, float("inf"))
for i in range(num1):
result.append(min(arr[i:num2 + i]))
print(result[i])
해석
예제 입력1 | 예제 출력2 |
12 3 1 5 2 3 6 2 3 7 3 5 2 6 |
1 1 1 2 2 2 2 2 3 3 2 2 |
num1, num2 = map(int, input().split())
arr = list(map(int, input().split()))
result = []
우선 숫자의 개수, 슬라이딩 영역을 input으로 num1, num2 변수에 각각 담아주고 리스트 배열을 만들어 입력받은 숫자를 넣어주었다.
for i in range(num2 - 1):
arr.insert(0, float("inf"))
아래 이미지처럼 영역의 크기를 동일하게 유지시켜주기 위해 arr[0] 앞에 float("inf") 가상의 값을 넣어 슬라이딩 영역의 크기를 동일하게 맞춰주었다.
for i in range(num1):
result.append(min(arr[i:num2 + i]))
print(result[i])
num1만큼 반복을 진행해주고 미리 선언해놓았던 result 배열에 arr[i] 최소값을 append 해준 후 result[i]를 출력해준다.