Algorithm

[코딩테스트/Python] Greedy 알고리즘 예제/ 숫자 카드 게임

재온 2023. 3. 3. 16:32

숫자 카드 게임

여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임
- n*m 형식의 array
- 뽑고자 하는 카드가 포함되어 있는 행 선택-> 선택된 행에서 가장 숫자 낮은 카드 선택
-> 처음 카드 고를 행 선택할 때, 숫자 낮은 카드 뽑을거 고려해서 -> 가장 큰 숫자를 최종적으로 뽑도록 해야함!

Greedy 알고리즘 접근법

문제 해결을 위한 아이디어를 떠올리고 이를 구현해보자 !

가장 큰 수, 가장 작은 수 등의 말이 나온다면 greedy라고 생각하고 구현 아이디어를 떠올려보자


나의 풀이

n,m = map(int, input().split())
#n*m 만큼의 데이터 입력 받기 -> 각 행별 list로 저장
temp =[]
for i in range(n):
    li = list(map(int, input().split()))
    temp.append(min(li))
print(max(temp))

 

책 풀이 

결과값을 0으로 먼저 정의한 후 각 행별 최소값과 비교하여 반복문을 돌며 최종 최소값을 반환하도록 함.

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

난 list에 최소값들을 저장한 후 list의 max값을 구하는 식으로 했는데, 이렇게 하는 방법도 있구나

 

[reference]

도서 "이것이 코딩 테스트다" (https://github.com/ndb796/python-for-coding-test)

300x250