일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- C
- 초보
- 입문
- Implemention
- 알고리즘
- Python
- 정리
- VS
- 구현
- 그리디
- C 언어
- CSS
- 문자열
- greedy
- implement
- Beakjoon
- c언어
- 코드엔진
- 10926
- 백준
- C Programming
- 설명
- 꾸준히
- 10807
- 친절한 설명
- 문제풀이
- Baekjoon
- 심화1
- HTML
- 파이썬
- Today
- Total
안경잡이 구루루
백준 2566 (최댓값) [Python/파이썬] 본문
https://www.acmicpc.net/problem/2566
나:
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)
위 반복문을 통해 최종적인 결과값들을 출력한다.
'파이썬(Python) > 문제풀이(백준,BaekJoon)' 카테고리의 다른 글
백준 2720 (세탁소 사장 동혁) [Python/파이썬] (0) | 2023.09.01 |
---|---|
백준 10798 (세로읽기) [Python/파이썬] (0) | 2023.08.31 |
백준 2444 (별 찍기 -7 ) [Python/파이썬] (0) | 2023.08.30 |
백준 10988 (팰린드롬인지 확인하기) [Python/파이썬] (0) | 2023.08.29 |
백준 25206 (너의 평점은) [Python/ 파이썬] (0) | 2023.08.29 |