2556번 : 최댓값

2024. 1. 4. 16:36개인활동/코테

 

2566번: 최댓값

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

www.acmicpc.net

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

 

What’s New In Python 3.8

Editor, Raymond Hettinger,. This article explains the new features in Python 3.8, compared to 3.7. Python 3.8 was released on October 14, 2019. For full details, see the changelog. Summary – Releas...

docs.python.org

i:=n.index(max(n,key=int))

이렇게 사용하면 i라는 값에 n.index(max(n, key=int))가 바로 대입된다고 생각하면 된다.

 

그리고 max 함수에 있는 key값 무엇인지 알아보니,

어떤 것을 기준으로 max값을 찾을 것인지 명령해주는 파라미터이다.

여기서는 int값을 기준으로 찾아라는 명령

 

파이썬 최소, 최대값을 찾는 함수min,max / dict min, max 함수 설명과 매개변수 key, default (Python)

파이썬 min, max 함수 - 순서 - 1. max 2. min 3. 매개변수(key, default) 4. dictionary max, min 1. max( ) max(iterable) 괄호( ) 안에 리스트, 문자 열등 반복 가능한 자료형을 넣으면 가장 큰 값을 반환해준다. >>> max(-5,

ooyoung.tistory.com

 

전체적으로 코드를 보았을 때

 

여기서는 행렬을 한줄로 받아서 사용하고, 인덱스만 새로 계산해주는 것같다.

 

행렬은 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