Hello Computer Vision

백준 알고리즘 2566번 [최댓값] 파이썬 본문

백준알고리즘/구현

백준 알고리즘 2566번 [최댓값] 파이썬

지웅쓰 2023. 4. 15. 22:45

 

https://www.acmicpc.net/problem/2566

 

2566번: 최댓값

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

www.acmicpc.net

어제 2차원 리스트에 관해 감을 못잡았었는데 문제를 풀다보니 감을 잡앗다.

일단 9x9 행렬이니 미리 변수를 할당해주고, row list를 만들어 반복문을 실행하는 동안 이 리스트 안에 넣어준다. 참고로 넣어줄 때 리스트로 넣어주어야 한다. 그냥 넣어주면 9개라는 숫자를 넣었는데 받는 변수는 1개이기 때문에 에러가 난다. 그리고 이 문제의 핵심은 아마 row, list, max number를 반복문 전에 미리 할당해놓으면 접근하기 쉬운 문제 같다. 최댓값을 0으로 해두고 이중 반복문을 돌려 숫자가 더 큰게 나올 때마다 변수를 바꿔준다. 그리고 코드 시작 때 int로 입력을 받지 않고 float으로 받은 이유는 0때문이다. 출력할 때는 int로 다시 바꿔준다.

row = 9
column = 9

row_list = []
max_row = 1
max_column = 1
max_number = 0
for i in range(row):
    numbers = list(map(float, input().split()))
    row_list.append(numbers)

for i in range(1, row+1):
    for j in range(1, column+1):
        number = row_list[i-1][j-1]
        if number >= max_number:
            max_number = number
            max_row = i
            max_column = j
print(int(max_number))
print()
print(max_row, max_column)