• 경고 후반부에 충격적인 모범 답안이 있습니다.

파이썬은 input()입력을 하면 한 줄만 받는다

a = input() # 이런 경우에 입력결과가 a로 들어가겠지?

그러면 여기서 질문.

인풋을 여러 줄 받으려면?

간단하다. input()을 여러번 쓰면 된다

a = input ()
b = input ()
# 여러 줄 인풋 받으려면 여러 줄 인풋을 넣어

for i in range(5):
    print(input()) # 이렇게 하면 인풋을 for로도 받을 수 있음

이를 이용한 문제 풀이!

seq = int(input())
best_grade = input().split()
for i in range(seq-1):
    grade = input().split()
    if int(grade[0]) > int(best_grade[0]):
        best_grade = grade
    elif int(grade[0]) == int(best_grade[0]):
        if int(grade[1]) < int(best_grade[1]):
            best_grade = grade
print(int(best_grade[0]), int(best_grade[1]))

input으로는

첫째줄에 사람 수

둘째 줄부터 성적 두개가 나온다

첫번째 성적이 높으면 제일 성적 좋은사람
같다면 두번째 성적이 낮은 사람이 제일 점수가 높은 사람이 되는 방식

5
10 20
10 30
40 50
50 40
50 30

이 경우 예상되는 output은 50 40 이다.

충격! 공포! 모범 답안이/가 나타났다.

scores = []
n = int(input())

for i in range(n):
    scores.append(list(map(int, input().split())))

scores.sort(key = lambda t : (-t[0], t[1]))

print(scores[0])

저 말은 이제 score 라는 list를 만들고 첫 input 은 range의 범위를 정해주고,
그 다음 input부터는 split으로 잘라서 int처리를 해서 리스트로 만듬 즉 10 20 은 [10(int 타입), 20(int 타입)]이런 식으로

전부 잘라서 리스트를 만들면 scores 리스트는 [[10, 20], [10, 30], .... [50, 30]] 이런 리스트가 되겠지?
그거를 sort 를 이용해서 scores.sort를 이용해서 t의 0번 인덱스는 큰 순서대로(내림차순으로), t의 1번 인덱스는 작은 순서대로 (오름차순으로) 정리해주는거!

결국 scores라는 리스트는 sorting 이 되어버린 거죠. 내림 , 오름차순으로

그래서 sort한 첫번째 원소가 답이 되는 구조,,!

공포 그 자체 야생의 한줄코드가 등장했다.

print(*sorted([[*map(int, input().split())] for i in range(int(input()))], key=lambda t: (-t[0], t[1]))[0])

저런 괴수도 있으니 우리모두 괴수가 되도록 노력합시다. 오늘하루도 수고하셨습니다.