백준 2566 (최댓값) - Python

김종언·2024년 1월 13일
0

백준

목록 보기
3/18

문제

내가 생각한 해결방법 :
이차원 배열로 9x9 행렬을 만든다. 최댓값을 구하는 방법은 각 row에서 대빵형님(max값)을 골라서 list에 모아둔 다음 거기서 또 찐또대빵형님(max값 리스트중 max값)을 고를거라 어려워보이지 않는다. 찐또대빵형님의 출신지(index)를 구하는게 포인트같다. 고민해보자.

풀이

전체 코드

A, B, C = [], [], []

for i in range(9):
    A.append([j for j in map(int, input().split())])

for i in range(9):
    maximum = max(A[i])
    B.append(maximum)
    C.append(A[i].index(maximum))

result = max(B)
row = B.index(result)
col = C[row]

print(result)
print(row + 1, col + 1)

코드 풀이.

A, B, C = [], [], []

for i in range(9):
    A.append([j for j in map(int, input().split())])

for i in range(9):
    maximum = max(A[i])
    B.append(maximum)
    C.append(A[i].index(maximum))

A는 9x9 이차원 배열, B는 각 동네 대빵행님들(각 row의 max값 모음), C는 각 동네 대빵행님들 출신지(각 row의 max값의 index)를 받았다.

for i in range(9):
    maximum = max(A[i])
    B.append(maximum)
    C.append(A[i].index(maximum))

이 for문은 한번 반복할 때마다 이차원 배열인 A의 각 행을 돌며 최댓값을 받아 B에 집어넣는다.
그리고 B에 집어넣은 최댓값 index를 i번째 행에서 구해 C에 넣는다. 어차피 행 순서 그대로 C에 넣기 때문에 row index는 C의 index를 그대로 사용하면 된다.

result = max(B)
row = B.index(result)
col = C[row]

print(result)
print(row + 1, col + 1)

각 행의 최댓값 중 최댓값인 max(B)를 구해 결과로 출력한다.
그리고 그 max(B)의 row index는 B에서의 index를 그대로 받으면 되고, col index는 C에 잘 저장돼있다.

출력은 index가 아니라 n번째를 구하기 때문에 row와 col에 1씩 더해줬다.

코멘트.

다시 보니 배열 이름을 A B C로 지은게 아쉽다. 문제자체는 별거없었다. 다음.

profile
나는 김종언이다.

0개의 댓글