컴공생 누르지 마세요! 컴공생 울어요.

[그리디] 그리디 알고리즘 (3) 실전 문제 - 숫자 카드 게임 본문

STUDY/알고리즘

[그리디] 그리디 알고리즘 (3) 실전 문제 - 숫자 카드 게임

당도최고치악산멜론 2023. 3. 6. 19:56

이코테 p.96 실전 문제 - 숫자 카드 게임

내 소스코드

각 행의 가장 작은 수 중에서 가장 큰 수를 구하는, 그리디 알고리즘 적용

import sys

N, M = map(int, sys.stdin.readline().rstrip().split())
data = []
for n in range(N):
  data.append(list(map(int, sys.stdin.readline().rstrip().split())))
maximum = 0

# 각 행의 가장 작은 수 중 가장 큰 수 구하기
for n in range(N):
  # 각 행의 가장 작은 수 구하기
  minimum = data[n][0]
  for m in range(M):
    if minimum > data[n][m]:
      minimum = data[n][m]

  # 각 행의 가장 작은 수 중에서 가장 큰 수 구하기
  if maximum < minimum:
    maximum = minimum

print(maximum)

교재 소스코드 ver1 - min() 함수 이용

import sys

N, M = map(int, sys.stdin.readline().rstrip().split())
result = 0

for n in range(N):
  data = list(map(int, sys.stdin.readline().rstrip().split()))
  minimum = min(data)
  result = max(result, minimum)

print(result)

교재 소스코드 ver2 - 이중for문 이용

import sys

N, M = map(int, sys.stdin.readline().rstrip().split())
result = 0

for n in range(N):
  data = list(map(int, sys.stdin.readline().rstrip().split()))
  # 현재 행에서 가장 작은 수 찾기
  minimum = 12345
  for a in data:
    minimum = min(minimum, a)
  # 가장 작은 수들 중에서 가장 큰 수 찾기
  result = max(result, minimum)

print(result)
Comments