본문 바로가기
I am a developer

백준 / Python / 2566 / 최댓값 / 문제풀이 / 상세설명

by Echinacea 2023. 5. 29.
반응형

 

 

 

 

 

문제 설명

 

 

 

문제의 포인트

  • 2차원 배열 중에서도 쉬운 난이도의 문제이다.
  • index, max 함수를 사용할 줄 알면 어렵지 않을 것

 

 

 

문제 풀이 방법

 

 

줄 갯수가 처음부터 주어져 있는 문제라 좀 더 쉽게 풀 수 있다.






  1. 첫 줄에는 모든 입력값을 2차원 배열 형태로 담을 1차원 배열을 하나 선언한다.
totalArray = []

 

 

2. 두번째 줄에는 각 줄에서 가장 큰 max 값을 담기 위한 max 전용 리스트를 하나 선언한다.

maxArray = []

 

 

 

3. 9x9 줄을 한꺼번에 담기 위한 입력문을 작성하고, 첫 줄에 만들어놓은 1차원 배열 ‘totalArray’에 입력값을 모두 넣어준다.

for i in range(9):
    row = list(map(int, input().split()))
		totalArray.append(row)

 

 

 

4. 그 다음 줄에 바로 입력받은 각 줄의 max값을 두번째 줄에 선언한 maxArray에 집어넣어준다.

for i in range(9):
    row = list(map(int, input().split()))
    totalArray.append(row)
    maxArray.append(max(row))

 

 

5. max값을 담아준 maxArray를 활용한다. maxArray에서 가장 큰 값이 나오는 배열의 위치가 입력받은 줄에서의 위치(maxArray의 3번째 값 == 9줄 중 3번째 줄) 이므로 이를 활용해 row와 column의 위치를 알 수 있다.
maxArray를 maxArray만큼 돌리면서, maxArray의 값 중 가장 큰 값이 우리가 원하는 값이므로 maxArray에서 가장 큰 값이 나올 때의 인덱스를 구한다.

for i in range(len(maxArray)):
    if maxArray[i] == max(maxArray):
        print(max(maxArray))

 

 

 

6. 이때 구한 maxArray의 값 i == 9줄 중 i번째 줄이고, 이때의 값은 해당 row에서 몇 번째 값인지 구해주면 끝이 난다.

for i in range(len(maxArray)):
    if maxArray[i] == max(maxArray):
        print(max(maxArray))
        print(i+1, totalArray[i].index(max(maxArray))+1)

 

 

 

 

최댓값 대신 최솟값을 구할 때는 max 대신 min으로 바꿔서 구하면 된다.



 

 

정답 코드

 

totalArray = []
maxArray = []

for i in range(9):
    row = list(map(int, input().split()))
    totalArray.append(row)
    maxArray.append(max(row))

for i in range(len(maxArray)):
    if maxArray[i] == max(maxArray):
        print(max(maxArray))
        print(i+1, totalArray[i].index(max(maxArray))+1)

 

 

 

 

반응형

댓글