일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 토이프로젝트
- 필기
- c언어
- SQL
- 데이터베이스
- 해킹실습
- 엘라스틱서치
- 스파크
- SQL 문법
- 스프링부트
- 이클립스
- 문법
- 빅데이터
- 모의해킹
- 프로그래밍
- 자바
- 기초
- 스프링
- 백준
- SQL 정리
- 알고리즘
- 파이썬
- 문제풀이
- 코딩테스트
- 위클리챌린지
- 오라클
- 프로그래머스
- MySQL
- 리눅스마스터 2급 2차
- 데이터프로그래밍
- Today
- Total
개발일기
백준 2566번 파이썬 풀이 : 최댓값 본문
문제 링크 : https://www.acmicpc.net/problem/2566
2566번: 최댓값
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.
www.acmicpc.net
<그림 1>과 같이 9×9 격자판에 쓰여진 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오.
예를 들어, 다음과 같이 81개의 수가 주어지면
1열2열3열4열5열6열7열8열9열1행2행3행4행5행6행7행8행9행
3 | 23 | 85 | 34 | 17 | 74 | 25 | 52 | 65 |
10 | 7 | 39 | 42 | 88 | 52 | 14 | 72 | 63 |
87 | 42 | 18 | 78 | 53 | 45 | 18 | 84 | 53 |
34 | 28 | 64 | 85 | 12 | 16 | 75 | 36 | 55 |
21 | 77 | 45 | 35 | 28 | 75 | 90 | 76 | 1 |
25 | 87 | 65 | 15 | 28 | 11 | 37 | 28 | 74 |
65 | 27 | 75 | 41 | 7 | 89 | 78 | 64 | 39 |
47 | 47 | 70 | 45 | 23 | 65 | 3 | 41 | 44 |
87 | 13 | 82 | 38 | 31 | 12 | 29 | 29 | 80 |
이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다.
입력
첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 수가 주어진다. 주어지는 수는 100보다 작은 자연수 또는 0이다.
출력
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.
# 문제 풀이
이 문제는 배열의 인덱스를 얼마나 유동적으로 사용할 수 있는지 확인할 수 있는 문제인 것 같다.
1
|
arr = [i for i in range(9)]
|
cs |
이렇게 9개의 행을 먼저 생성해 둔 후 열을 한번에 입력 받는다.
1
2
3
4
|
answer = []
for i in range(9):
arr[i] = list(map(int, input().split()))
answer.append(max(arr[i]))
|
cs |
list 형태로 열을 입력 받은 후에 각 열에 최대값을 answer 배열에 추가해 준다.
1
2
3
|
print(max(answer))
print(answer.index(max(answer)) + 1, arr[answer.index(max(answer))].index(max(answer)) + 1)
|
cs |
후에 answer 배열에서 최대값을 출력하게 되면 9 * 9 에서 최대값을 출력하는 것과 동일하게 된다.
그 후에 행과 열은 배열.index 를 적절히 사용하여 출력하게 된다.
여기서 프로그래밍은 배열이 0부터 시작하지만 문제는 1행 1열 부터 시작하기 때문에 행, 열 각각 1씩 더해준 값을 출력하면 된다.
# 전체 코드
1
2
3
4
5
6
7
8
9
|
arr = [i for i in range(9)]
answer = []
for i in range(9):
arr[i] = list(map(int, input().split()))
answer.append(max(arr[i]))
print(max(answer))
print(answer.index(max(answer)) + 1, arr[answer.index(max(answer))].index(max(answer)) + 1)
|
cs |
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
백준 1183번 파이썬 풀이 : 약속 (0) | 2021.10.09 |
---|---|
백준 1181번 파이썬 풀이 : 단어 정렬 (0) | 2021.10.09 |
백준 1158번 파이썬 풀이 : 요세푸스 문제 (0) | 2021.10.07 |
백준 1094번 파이썬 풀이 : 막대기 (0) | 2021.10.07 |
백준 1145번 파이썬 풀이 : 적어도 대부분의 배수 (0) | 2021.10.06 |