[이것이 코딩 테스트다] 그리디 - 숫자 카드 게임
6917 단어 이것이 코딩 테스트다algorithm그리디algorithm
그리디
현재 상황에서 지금 당장 좋은 것만 고르는 방법
✅ 문제
숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 봅는 게임이다.
- 숫자가 쓰인 카드들이 N X M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다.
- 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다.
- 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다.
입력 예시
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)
설계
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() 함수 잘 활용하기
Author And Source
이 문제에 관하여([이것이 코딩 테스트다] 그리디 - 숫자 카드 게임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@xxwb__/이것이-코딩-테스트다-그리디-숫자-카드-게임
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여([이것이 코딩 테스트다] 그리디 - 숫자 카드 게임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@xxwb__/이것이-코딩-테스트다-그리디-숫자-카드-게임저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)