[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)