알고리즘 / 자료구조’ 시리즈

[이.취.코] Chap 3. 그리디 - 숫자 카드 게임

  • 0
  • 0
0
0

1. 숫자 카드 게임

  • 난이도
  • 풀이 시간
    • 30분
  • 시간 제한
    • 1초
  • 메모리 제한
    • 128MB
  • 기출
    • 2019 국가 교육기관 코딩 테스트

A. 문제

가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다.

  1. 숫자 카드는 N * M 형태로 놓여 있다.
  2. 뽑고자 하는 카드가 포함되어 있는 행을 선택한다
  3. 그 중 가장 숫자가 낮은 카드를 뽑아야 한다
  4. 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 한다.
a. 예를 들면.

3 1 2
4 1 4
2 2 2

이 경우, 첫 번째 혹은 두 번째 행을 선택하는 경우, 최종적으로 뽑는 카드는 1이다. 하지만 세 번째 행을 선택하는 경우 최종적으로 뽑는 카드는 2이다. 따라서 정답은 2가 쓰여진 카드를 뽑는 것이다.

b. 입력 조건
  • 첫번째 줄에 숫자 카드들이 놓인 행의 개수 N과 열의 개수 M이 공백을 기준으로 각각 자연수로 주어진다 (1 <= N, M <= 100)
  • 두번째 줄부터 N개의 줄에 걸쳐 각 카드에 적힌 숫자가 주어진다.
    • 각 숫자는 1 이상 10000 이하의 자연수이다.
c. 출력 조건
  • 첫번째 줄에 게임의 룰에 맞게 선택한 카드에 적힌 숫자를 출력한다.
d. 테스트 케이스
  • 입력 예시

    
    3 3
    3 1 2
    4 1 4
    2 2 2
    
    
    
        2 4
        7 3 1 8
        3 3 3 4
    
    
  • 출력 예시

    
    2
    
    
    
    3
    
    

B. 내 답안


n, m = list(map(int, input().split()))
card = list()
choice = list()  

for i in range(n):
    card.append(list(map(int, input().split())))
    card[i].sort()
    choice.append(card[i][0])

choice.sort()

print(choice[-1])

a. 회고

반성

  • min_value = min(data)
    • 기존 함수들을 잘 기억해내자.
    • min(), max() 등

C. 문제 해설

각 행마다 가장 작은 수를 찾은 뒤에 그 수 중에서 가장 큰 수를 찾는 것.

입력으로 들어오는 수는 모두 10000 이하이므로 단순히 배열에서 가장 작은 수를 찾는 기본 문법을 이용하여 각 해에서 가장 작은 수를 찾은 다음 그 수 중에서 가장 큰 수를 찾는 방식으로 문제를 해결할 수 있다.

a. 책 답안

python-for-coding-test/3.py at master · ndb796/python-for-coding-test (github.com)

python-for-coding-test/4.py at master · ndb796/python-for-coding-test (github.com)

참고문헌

나동빈, "이것이 취업을 위한 코딩 테스트다 with 파이썬", 초판, 2쇄, 한빛미디어, 2020년

#코딩테스트 #파이썬 #나동빈 #한빛미디어 #그리디 #큰수의법칙 #문제 #풀이

0분전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.