백준 2566번 '최댓값' - [Python]

림민지·2025년 3월 4일

#️⃣ 2566번

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

문제

<그림 1>과 같이 9×9 격자판에 쓰여진 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오.

예를 들어, 다음과 같이 81개의 수가 주어지면

이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다.

입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 수가 주어진다. 주어지는 수는 100보다 작은 자연수 또는 0이다.

출력

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


✏️ 풀이

9*9칸의 숫자들 중에서, 가장 큰 숫자의 좌표를 기억해놔야한다.
각 행 별로 최댓값(maxN)을 저장할 List 와 열의 좌표를 기억할 Location 리스트를 정의한다.

List = []
Location = [0 for i in range(9)]

9행 동안, list로 행의 9개 숫자들을 입력받고, maxN을 구해 List와 Location 좌표를 저장한다

for i in range(9) :
    maxN = 0
    N = list(map(int, input().split()))
    for j in range(9):
        if N[j] >= maxN :
            maxN = N[j]
            Location[i]=j
    List.append(maxN)

각 행의 최댓값을 저장했던 리스ㅌ List 중에서 최댓값을 저장하기 위해 maxL을 만들고, 좌표를 찾기위한 x, y 도 정의한다.

maxL = 0
x, y =0,0
for i in range(9) :
    if List[i] >= maxL :
        maxL = List[i]
        x, y = i, Location[i]
print(maxL)
print(x+1,y+1)

저장된 좌표값은 0에서부터 시작이므로, 표에 맞추어 1부터 시작하는 행으로 만들기 위해 각각 1씩 더해준다!


✨ 전체 코드

List = []
Location = [0 for i in range(9)]
for i in range(9) :
    maxN = 0
    N = list(map(int, input().split()))
    for j in range(9):
        if N[j] >= maxN :
            maxN = N[j]
            Location[i]=j
    List.append(maxN)
maxL = 0
a,b =0,0

for i in range(9) :
    if List[i] >= maxL :
        maxL = List[i]
        a, b = i, Location[i]
print(maxL)
print(a+1,b+1)
profile
@lim_128

0개의 댓글