본문 바로가기
프로그래머스,백준/알고리즘

[이것이 코딩 테스트다 with Python] 그리디 - 숫자 카드 게임 (Python)

by z.1nee 2020. 10. 30.
SMALL
더보기

이 글은 이것이 취업을 위한 코딩테스트다 책을 기반으로 쓰여진 글입니다.
출처 : 이것이 취업을 위한 코딩테스트다.


문제

여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임

단, 게임의 룰을 지키며 뽑아야함

 

1. 숫자가 쓰인 카드들이 N X M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하고, M은 열의 개수를 의미

2. 먼저 뽑고자 하는 카드가 포함된 행을 선택

3. 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑음

4. 처음에 카드를 골라낼 행을 선택할 때, 이후 해당 행에서 가장 숫자가 낮은 카드를 뽑아야 하는 것을 고려해 가장 높은 숫자를 뽑을 수 있도록 해야함

 

입력 조건

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

(1 <= N, M <= 100)

둘째 줄부터 N개의 줄에 걸쳐 각 카드에 적힌 숫자가 주어짐 각 숫자는 1이상 10000이하의 자연수

 

출력 조건

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

 

입출력 예

입력 출력
3 3
3 1 2
4 1 4
2 2 2
2
2 4
7 3 1 8
3 3 3 4
3

입출력 예 설명

입출력 예 #1

  • 첫번째 혹은 두번째 행을 선택하면 최종적으로 뽑는 카드는 1
  • 세번째 행을 선택하면 최종적으로 뽑는 카드는 2
  • 따라서 세번째행을 선택해 2를 뽑는 것이 정답

 

입출력 예 #2

  • 첫번째 행을 선택하면 최종적으로 뽑는 카드는 1
  • 두번째 행을 선택하면 최종적으로 뽑는 카드는 3
  • 따라서 두번째행을 선택해 3를 뽑는 것이 정답

알고리즘

1. M개의 숫자를 N번 입력 받음

2. 각 행에서 최솟값을 찾아 min 리스트에 넣음 (N번 반복) 

3. min 리스트에서 최댓값을 출력

 

 

필요 함수 정리

최대값

  • max()
    • 형식 : max(x)
    • x는 iterable한 자료형이어야함
    • 인수로 받은 자료형 내에서 최대값을 찾아서 반환하는 함수

 

 

최소값

  • min()
    • 형식 : min(x)
    • x는 iterable한 자료형이어야함
    • 인수로 받은 자료형 내에서 최소값을 찾아서 반환하는 함수

 

 

 

 

리스트에 추가

  • append()
    • 형식 : list.append(x)
    • 리스트 끝에 x 1개를 그대로 넣음

 

 

내 소스 코드

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

answer = 0
row_min = []

for j in range(n):
        row = list(map(int,input().split()))
        row_min.append(min(row))

answer = max(row_min)

print(answer);

 

결과 

 

 

 

 

 

 

 

댓글