문제

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

 

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

 

 

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

 

 

조건 및 입출력

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

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

 

 

코드 (Python 3)
# 입력부 / 처리부
max_num=0;
row=0; col=0;

for i in range(9):
    nums=list(map(int,input().split()));

    if(max_num<max(nums)):
        max_num=max(nums);
        row=i;
        col=nums.index(max(nums));

# 출력부
print(max_num);
print(row+1,col+1);

 

 

풀이 과정

전역 변수로 max_num, row, col을 전부 0으로 정의했다.

 

그 후 9x9 행렬에서의 최댓값을 찾아야 하므로, 9번의 반복을 실행하는 for문을 작성하였다.

for문 매번 실행될 때마다, 행의 숫자들을 입력받는다.

 

9번의 입력을 받으면서, 최댓값이 있는 경우

max_num의 값을 바꿔준다.

그 후 max_num의 좌표를 바꿔준다. row는 i의 위치, col은 nums 리스트에서 max_num이 있는 위치값을 넣어주면 된다.

 

9번의 반복이 끝나면, 

최댓값과 row+1, col+1의 값을 출력한다.

(row, col은 배열의 위치이므로 0번부터 시작하기 때문이다. 고로 1행부터 시작하는 행렬에 맞게 +1을 해준다.)

 

 


 

코드가 이상하거나, 이해되지 않는 부분이 있다면 댓글 남겨주세요!

+ 더 좋은 풀이 방법이 있다면 알려주세요. :)

+ Recent posts