티스토리 뷰

https://www.acmicpc.net/problem/2075

 

2075번: N번째 큰 수

첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.

www.acmicpc.net


1. 접근 방식

  • 한 줄씩 입력 받을 때마다 1번째 ~ N번째 큰 수를 갱신하자

 

 1번부터 N번째 큰 수를 담는 리스트를 사용한다. 위 그림에선 노란 리스트이다. 회색 리스트는 매번 입력 받는 숫자들이다. 노란 리스트는 회색 리스트의 숫자들이 추가될 때마다 갱신된다.

 현재 노란색 리스트에 있는 숫자들과 회색 리스트에 있는 숫자들을 내림차순 정렬하고, 인덱스 0에서 (N - 1)까지 잘라서 노란 리스트에 담기를 반복한다. 그럼 마지막으로 갱신된 노란 리스트의 (N - 1) 인덱스가 바로 N번째 큰 수가 된다.

 

 

 

2. 정답 코드

import sys

input = sys.stdin.readline

N = int(input())
max_N = []
for _ in range(N):
    max_N = sorted(max_N + list(map(int, input().split())), reverse=True)[:N]
print(max_N[N-1])
728x90