- 문제

여러 개의 숫자 카드 중에서 가장 높은 숫자가 적힌 카드 한 장을 뽑는 게임.
게임의 룰은 다음과 같다.
1. 숫자가 적힌 카드들이 N * M 형태로 놓여 있음 (N은 행의 개수, M은 열의 개수)
2. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택
3. 그 다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑음.
4. 따라서 처음에 카드를 뽑을 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 함.

- 입력 조건

첫째 줄에 숫자 카드들이 놓인 행의 개수 N과 열의 개수 M이 공백을 기준으로 하여 각각 자연수로 주어짐.
(1 <= N, M <= 100)

- 출력 조건

첫째 줄에 게임의 룰에 맞게 선택한 카드에 적힌 숫자를 출력

- 입력 예시 1

3 3
3 1 2
4 1 4
2 2 2

- 출력 예시 1

2

- 입력 예시 2

2 4
7 3 1 8
3 3 3 4

- 출력 예시 2

3

- 문제 풀이

해당 문제는 그리디 알고리즘을 적용하여 쉽게 해결할 수 있다. 각 행마다 가장 작은 수를 찾은 뒤, 그 수 중에서 가장 큰 수를 찾으면 된다.

프로세스를 순차적으로 나열해보면,
1. 주어진 배열을 한줄 씩 입력 받기
2. 입력 받은 배열에서 가장 작은 수를 저장
3. 가장 작은 수들 중에서 가장 큰 수를 찾고 출력

n, m = map(int, input().split())
result = 0

for i in range(n):
    data = list(map(int, input().split()))
    min_value = min(data)
    result = max(result, min_value)
    
print(result)

출처: 이것이 취업을 위한 코딩 테스트다 with 파이썬, 나동빈 지음

profile
코딩하는 물리학도

0개의 댓글