정올/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가 가장 큰 값을 찾는” 과정이다.