[2566] 최댓값
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)
Leave a comment