https://www.acmicpc.net/problem/2566
[아이디어]
# 9x9 2차원 배열 만들어 놓기
# 배열 만들어 놓은거에 입력 받기
# 배열 돌면서 최댓값 찾기
# 최댓값의 위치 출력하기
[첫번째 풀이]
# 2차원 배열 선언
array = [[0 for col in range(9)] for row in range(9)]
# 2차원 배열 입력받기
for i in range(9):
array[i] = list(map(int, input().split()))
# max_data = max(array)
# print(max_data)
# 최댓값 찾기
max_data = max(map(max,array))
print(max_data)
- 최댓값을 찾기 위해 max()함수를 썼다. 근데 인덱스를 찾을려면 어차피 for문 사용해야 함
- 주석 처리해놓은 부분은 저렇게 max()함수를 사용하면 출력 결과가 [87, 42, 18, 78, 53, 45, 18, 84, 53] 이렇게 나온다.
☆ 따라서 2차원 배열에서 max()나 min()함수 사용하고 싶으면 map()함수 이용해서 사용해야함!
[정답 풀이]
# 2차원 배열 선언
array = [[0 for col in range(9)] for row in range(9)]
# 2차원 배열 입력받기
for i in range(9):
array[i] = list(map(int, input().split()))
# 최댓값과 그 값의 위치 찾기
max_num = 0
max_row, max_col = 0, 0
for row in range(9):
for col in range(9):
if max_num <= array[row][col]:
max_row, max_col = row+1, col+1
max_num = array[row][col]
print(max_num)
print(max_row, max_col)
- 2차원 배열 입력 받기 : 각 줄에 9개의 숫자를 입력 받아 2차원 배열 'array'에 저장
- 이중 for문을 사용하여 배열 순회
- 현재 값 'array[row][col]'이 'max_num'보다 크거나 같으면 최댓값 갱신
- 'max_num'을 현재 값으로 갱신하고, 위치 'max_row'와 'max_col'을 현재 인덱스로 갱신
- 위치 인덱스는 0부터 시작하므로 1을 더하여 출력해야함
☆ 2차원 배열 선언하고 입력 받기
☆ 이중 for문을 사용하여 2차원 배열 순회하기
[map()]
- iterable을 받아서, 각 요소에 함수를 적용해주는 함수이다.
- map(적용시킬함수, 적용할 요소들)
- 출력 결과는 iterator이기 때문에 보통 list 타입으로 형 변환해서 사용한다
- 예제
arr = [1, 2, 3, 4]
print(list(map(str, arr))) # ['1', '2', '3', '4']
→ int형 데이터로 이루어져 있던 arr를 map()을 이용하여 모두 str형으로 바꿨다.
'백준' 카테고리의 다른 글
일반수학1 (0) | 2024.07.24 |
---|---|
[BaekJoon/Python3] 백준 10798번 : 세로읽기 (0) | 2024.07.24 |
[BaekJoon/Python3] 백준 25206번 : 너의 평점은 (0) | 2024.07.23 |
[BaekJoon/Python3] 백준 1316번 : 그룹 단어 체커 (0) | 2024.07.23 |
[BaekJoon/Python3] 백준 2941번 : 크로아티아 알파벳 (0) | 2024.07.22 |