정올/KOI기출 문제

정올 등교

juwanseo 2025. 5. 11. 20:34
N, X = map(int, input().split()) 
num = -1 

for _ in range(N):
    S, T = map(int, input().split())
    if S + T <= X:
        num = max(num, S) 

print(num)

n과 x를 입력받는다

num을 -1로 저장해둔다

N만큼 반복시킨다

s와 t도 입력받는다

만약 s와 t 를 더한 값이 x보다 크거나 같다면

num을 max(num,s)로 저장한 후 결과인 num을 출력한다

n, x = map(int, input().split())
arr = []
brr = []
for i in range(n):
    a, b = list(map(int, input().split()))
    arr.append(a)
    brr.append(b)
while True:
    y = arr.index(max(arr))
    if arr[y] == 0:
        print(-1)
        break
    if x >= arr[y] + brr[y]:
        print(arr[y])
        break
    else:
        arr[y] = 0
        brr[y] = 0

이 코드는 n개의 항목에 대해 각각 (a, b) 값을 입력받고, 주어진 x값으로 특정 조건을 만족하는 항목을 찾는 프로그램이다. 각 항목에서 a는 어떤 기준 값, b는 추가 비용처럼 해석할 수 있으며, arr 리스트에 a값을, brr 리스트에 b값을 저장한다. 이후 반복문에서 a값이 가장 큰 항목을 찾아 해당 항목의 a + b 값이 x 이하이면 그 a값을 출력하고 종료한다. 만약 조건을 만족하지 않으면 해당 항목을 0으로 바꾸고 다음 최대값을 찾아 다시 비교한다. 모든 항목이 제거되면 -1을 출력하고 종료한다. 요약하면, “x보다 작거나 같은 a + b 값을 가지는 항목 중 a가 가장 큰 값을 찾는” 과정이다.