문제
<그림 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을 해준다.)
| 코드가 이상하거나, 이해되지 않는 부분이 있다면 댓글 남겨주세요! + 더 좋은 풀이 방법이 있다면 알려주세요. :) |
'Programming > Python' 카테고리의 다른 글
| [백준] 10808번 : 알파벳 개수 (Python / 파이썬) (0) | 2023.01.27 |
|---|---|
| [백준] 2789번 : 유학 금지 (Python / 파이썬) (2) | 2023.01.24 |
| [백준] 2484번 : 주사위 네개 (Python / 파이썬) (0) | 2023.01.19 |
| [백준] 2309번 : 일곱 난쟁이 (Python / 파이썬) (0) | 2023.01.19 |
| [백준] 1747번 : 소수&팰린드롬 (Python / 파이썬) (0) | 2023.01.18 |