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

그리디
현재 상황에서 지금 당장 좋은 것만 고르는 방법


✅ 문제

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

  1. 숫자가 쓰인 카드들이 N X M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다.
  2. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다.
  3. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다.

입력 예시

3 3
3 1 2
4 1 4
2 2 2

출력 예시

2

💻 코드

N, M = map(int, input().split())

lst = []

for i in range(0, N):
    lst.append([])
    a = list(map(int,input().split()))
    lst[i] = a


result = 0

for i in range(N):
    lowest = lst[i][0]
    for j in range(M):
        if(lowest > lst[i][j]):
            lowest = lst[i][j]
    if(lowest > result):
        result = lowest

print(result)  

설계

lowest는 각 행에서 가장 작은 수를 저장하고 result는 행마다 lowest와 비교하여 result 보다 큰 값을 result로 저장한다.


➕ 문제 해설

min() 함수 사용

핵심! 각 행마다 가장 작은 수를 찾은 뒤에 그 수 중에서 가장 큰 수

답안

N, M = map(int, input().split())

result = 0

for i in range(N):
    data = list(map(int, input().split()))  #한 줄씩 입력받아 확인
    min_value = min(data)  # 현재 줄에서 min() 함수를 사용하여 가장 작은 수 찾기
    result = max(result, min_value)  # max() 함수 사용하여 가장 작은 수 중에서 가장 큰 수 찾기

print(result)

📝 정리

  • 문제에서 2차 배열을 만들라는 말이 없으면 2차 배열 형태로 문제가 주어져도 파이썬은 2차 배열을 굳이 만들지 않아도 되는 것 같다. C언어로 자료구조랑 알고리즘을 배워서 그 습관이 아직도 남아 있는 거 같다. 파이썬에 익숙해지자!!
  • 이것도 아직 파이썬에 익숙해지지 않아서 겠지만, 리스트에서 min(), max() 함수 잘 활용하기

좋은 웹페이지 즐겨찾기