내가 생각한 해결방법 :
이차원 배열로 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로 지은게 아쉽다. 문제자체는 별거없었다. 다음.