2556번 : 최댓값
2024. 1. 4. 16:36ㆍ개인활동/코테
반응형
9*9 행렬을 입력받고, 이 행렬에서 최댓값과 인덱스를 찾아 출력하는 문제이다.
matrix = [list(map(int, input().split())) for _ in range(9)]
max_list = []
### max값 뽑아내기 위해 각 행을 뽑아내고 max값 뽑기
for i in range(9):
max_list.append(max(matrix[i]))
print(max(max_list))
### 인덱스 추출을 위해 중첩 for문 이용
for row in range(9):
for col in range(9):
if max(max_list) == matrix[row][col]:
print(row+1, col+1)
더 쉬운 방법이 있을지 고민해봤지만, 마땅한 방법이 생각나지 않았다.
먼저 max값을 찾아서 출력 후 해당 값에 대한 인덱스를 뽑아냈다.
여기서 주의할 점은 인덱스 출력할 때 +1씩 해주어야 함
다음은 숏코드 분석
n = open(0).read().split()
print(n[i:=n.index(max(n,key=int))], i//9+1, i%9+1)
일단 여기서 모르는 것은 :=이다.
저번에 한번 정리했던 것 같은데
해당 기호는 바다코끼리 연산자라고도 불리며 파이썬 3.8 이후로 생겨난 연산자이다.
https://docs.python.org/ko/3/whatsnew/3.8.html
i:=n.index(max(n,key=int))
이렇게 사용하면 i라는 값에 n.index(max(n, key=int))가 바로 대입된다고 생각하면 된다.
그리고 max 함수에 있는 key값 무엇인지 알아보니,
어떤 것을 기준으로 max값을 찾을 것인지 명령해주는 파라미터이다.
여기서는 int값을 기준으로 찾아라는 명령
전체적으로 코드를 보았을 때
여기서는 행렬을 한줄로 받아서 사용하고, 인덱스만 새로 계산해주는 것같다.
행렬은 9*9이기 때문에 행값은 한줄일 때의 인덱스를 9로 나눴을 때 몫으로
열값은 한줄일 때의 인덱스를 8로 나눴을 때 나머지 값으로, 각각의 값에 1씩 더해주면 인덱스를 구할 수 있게 된다.
어떻게 이렇게 코드를 짜는걸까?
신기하다.
반응형
'개인활동 > 코테' 카테고리의 다른 글
백준 2750 : 오름차순 정렬 (0) | 2024.01.12 |
---|---|
10798번 : 세로읽기 (1) | 2024.01.06 |
백준 2738번 : 행렬 덧셈 (0) | 2024.01.02 |
백준 11718번: 그대로 출력하기 (0) | 2023.09.13 |
백준 5622번: 다이얼 (1) | 2023.09.07 |