본문 바로가기
Learning-log/Algorithm 문풀

백준(파이썬, python) - 2566번 최댓값 (2022.11.02)

by why제곱 2022. 11. 3.

1. 2566번

 

1) 문제

 

2) 풀이

import sys
max_numbers = []
max_column = []
for i in range(9):
        low = list(map(int,sys.stdin.readline().split()))
        max_numbers.append(max(low))
        max_column.append(low.index(max(low)))

M = max(max_numbers)
a = max_numbers.index(M)
b = max_column[a]

print(M)
print(a+1,b+1)

 

3) 문법 및 풀이과정

(1) max_numbers (각 행의 최댓값들을 모아둘 리스트)와 max_column(각 행의 최댓값의 index를 저장할 list , 즉 각 행의 최댓값이 몇 열에 위치하는 지를 알아내기 위한 리스트) 를 만든다.

(2) for문을 통해 각 행의 숫자들을 입력받는다.

(3) 입력 받은 수들 중 최댓값을 미리 만들어 둔 max_numbers에 추가한다.

(4) 추가한 최댓값의 index를 max_column 리스트에 추가한다.

(5) max_numbers 리스트의 최댓값이 곧 구하고자 하는 행렬 내의 최댓값이 된다. 이를 M이라 정의하자.(가독성을 위해)

(6) max_numbers에서의 M의 index가 곧 M의 행의 값이 된다.(물론 이때 파이썬 내에서는 시작을 0행으로 카운트 하므로 최종적으로는 1을 더해줘야한다.)

(7) max_column의 a index에 위치한 값이 행렬 내에서 M의 열의 값이 된다.

(8) 마지막으로 a,b를 출력하는데 이 때, 파이썬은 행과 열의 시작을 1행이 아닌 0행부터 시작하므로, a와 b에 각각 1을 더한 값을 출력한다.