2023.03.11

2566번: 최댓값

9X9 판에서 몇행 몇열에 최대값이 있는 지 찾는 문제이다.

어떻게 구현할지 생각해보면…


‘하나씩 숫자를 탐색하면서 최대값을 찾은 후 해당 격자판에서 최대값과 같은수가 위치한 행,열을 출력한다.’

라고 생각할 수 있지만,


최대값을 찾는데 전체 탐색, 다시 최대값이 있는 위치를 찾기위해 전체 탐색으로 총 2번 전체탐색을 하는 것은 비효율적이다.


그렇기 때문에 한가지 생각을 해보면… 한줄씩 입력을 받기 때문에 한 행당 큰수를 얻을 수 있다. 입력받은 즉시 큰 값에 대한 위치(index)를 저장시켜둔다.

nums = []
point = []
for i in range(9):
    l = list(map(int, input().split()))
    ml = max(l)
    nums.append(ml)
    point.append(l.index(ml))

이렇게 해두면. nums 에는 한 행당 가장 큰수들이 저장되고, point에는 각 행의 큰수가 몇번째 열에 있는지 저장된다.


그렇다면 nums에서 큰수는 격자판에서 가장 큰수이고, point에는 큰수들이 몇 번째 열에 있는지 저장되었기 때문에 큰수의 열을 알 수 있다.

max = max(nums)
print(max)
ind = nums.index(max)
print(ind+1, point[ind]+1)

최대값을 출력하고, 최대값의 행열을 각각 출력하면 된다.


풀이

if __name__ == '__main__':
    nums = []
    point = []
    for i in range(9):
        l = list(map(int, input().split()))
        ml = max(l)
        nums.append(ml)
        point.append(l.index(ml))

    max = max(nums)
    print(max)
    ind = nums.index(max)
    print(ind+1, point[ind]+1)

Tags:

Categories:

Updated:

Leave a comment