안경잡이 구루루

백준 2566 (최댓값) [Python/파이썬] 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 2566 (최댓값) [Python/파이썬]

구루루(gururu) 2023. 8. 30. 13:09
반응형

https://www.acmicpc.net/problem/2566

 

2566번: 최댓값

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

www.acmicpc.net

 


나:

max_hangs=[]
max_yuls=[]

for i in range(9):
  a = list(map(int,input().split()))
  hangmax = max(a)
  yulmax = a.index(hangmax) +1
  max_hangs.append(hangmax)
  max_yuls.append(yulmax)
  
print(max(max_hangs))
location = max_hangs.index(max(max_hangs))
print((location+1), max_yuls[location])

완성된 코드는 위와 같다.

 

(1)
max_hangs=[]
max_yuls=[]

max_hangs 에는 각 행별로 가장 큰 수가 들어갈 list 변수를 만듦

max_yuls 에는 각 행별 가장 큰 수가 존재하는 열의 위치가 들어갈 list 변수를 만듦

 

(2)
for i in range(9):
  a = list(map(int,input().split()))
  hangmax = max(a)
  yulmax = a.index(hangmax) +1
  max_hangs.append(hangmax)
  max_yuls.append(yulmax)

2차원 배열을 쓰는 문제로 되었지만 그냥 일단 생각나는 풀이로 문제를 풀었다.

9 x 9 격자판을 이용하니 총 9번 반복을 통해 코드를 작성했다.

우선 한줄에 공백을 기준으로 9개의 자연수를 받았다.

그리고 그 한줄에서 가장 큰수를 hangmax 변수에 담고 이것의 열 위치를 index()함수를 이용해 yulmax 변수에 담음.

이때 인덱스는 0부터 시작하기 때문에 문제에서처럼 1부터 시작하는 점을 반영하기 위해 index함수 결과 +1을 해줌

이후에 위의 최대값, 최대값의 열 위치 결과를 위에서 선언했던 리스트 에 넣었다.

위 과정을 반복하여 순서대로 리스트 변수에 넣는다.

 

(3)
print(max(max_hangs))
location = max_hangs.index(max(max_hangs))
print((location+1), max_yuls[location])

첫째 줄에 최대값을 출력하고

위에서 순서대로 리스트에 넣었기 때문에 max_hangs에 들어간 자연수들 중 쵀대값의 인덱스 위치는 격자판의 행 위치와 같다.

최종적으로 그 최대값의 인덱스 위치에 +1 해주어 격자판의 행위치를 반영하고 그 최대값이 존재하는 인데스 가 저장된 위치를 출력한다


다른사람:

https://velog.io/@sihoon_cho/1

table = [list(map(int, input().split())) for _ in range(9)]

max_num = 0
max_row, max_col = 0, 0
for row in range(9):
    for col in range(9):
        if max_num <= table[row][col]:
            max_row = row + 1
            max_col = col + 1
            max_num = table[row][col]

print(max_num)
print(max_row, max_col)

완성된 코드는 위와 같다.

 

(1)
table = [list(map(int, input().split())) for _ in range(9)]
max_num = 0
max_row, max_col = 0, 0

우선 table 변수에 입력값을 일단 전부 받는다.

이때 list()함수 밖에도 [ ] 도 둘러싸서 리스트가 2개 중첩된 구조를 만들어주었음에 주목할 필요가 있다.

출력할 최대값 max_num 과 열,행인 max_row, max_col 변수를 선언한다.

 

(2)
for row in range(9):
    for col in range(9):
        if max_num <= table[row][col]:
            max_row = row + 1
            max_col = col + 1
            max_num = table[row][col]

입력값을 다 받은 후 위의 table 변수의 리스트 2차원을 이용한 반복문을 이용한다.

이때 위처럼 인덱싱 [ ] 으로 둘 이상도 사용 가능함을 항상 염두하기.  이때도 0부터 인덱싱이 되기 때문에 +1을 해준 모습을 확인가능

반복문이 실행될 때마다 max_num 이 업데이트 되고 있음에 주의

 

(3)
print(max_num)
print(max_row, max_col)

위 반복문을 통해 최종적인 결과값들을 출력한다.

반응형