백준 11557번은 학교별로 마신 술의 양을 비교해서 가장 많이 마신 학교를 출력하는 문제입니다.
저는 중첩 반복문을 사용했습니다.
https://www.acmicpc.net/problem/11557
<코드>
T = int(input())
school, amount = [], []
import sys
for t in range(T):
N = int(sys.stdin.readline())
for n in range(N):
school_amount = sys.stdin.readline().split()
school.append(school_amount[0])
amount.append(int(school_amount[1]))
max_amount = max(amount)
for n in range(N):
if amount[n] == max_amount:
print(school[n])
else:
continue
(1) 테스트 케이스(T)를 int(input())으로 입력받습니다.
(2) 학교 이름과 술의 양을 입력받을 리스트 school, amount를 선언합니다.
(3)
for문 안에서 입력받아야 하므로 실행 시간을 줄이기 위해 모듈 sys를 import합니다.
(4)
겉 for문 - T회 실행
(5)
대학교 개수 입력받도록 합니다.
대학교 개수를 입력받는다는 것 = 대학교 이름과 술의 양을 몇 번 입력할 것인지
(6) ~ (9)
속 for문[1] - N번 실행
school_amount는 한 줄에 입력받는 대학교 이름과 술의 양입니다.
공백을 기준으로 split 하면
school_amount[0]은 대학교 이름,
int(school_amount[1])은 술의 양으로 나뉩니다!
그래서 이 값을 각각 school, amount 리스트에 append합니다.
(11) ~ (15)
속 for문[2] - N번 실행
술의 양이 최대한 학교를 비교하기 위한 코드입니다.
우선 (10)번줄에서 max_amount 변수에 max(amount)를 저장합니다.
amount는 리스트이므로 max를 통해 최댓값을 얻을 수 있습니다.
그리고 for문으로 amount 리스트의 요소들에 접근하며
if문으로 amount 리스트의 요소가 최댓값과 같은지 비교합니다.
소비하는 술의 양이 같을 수 없다고 백준에서 명시되어 있으므로,
최댓값과 같은 amount 리스트의 인덱스를 이용하여
school 리스트에 접근한 후 요소를 출력합니다.
코린이 대학생의 풀이였습니다.
풀이에 오류가 있거나 빈약한 부분이 있다면 얼마든지 댓글 남겨주시기 바랍니다.
https://like-a-happy-cat.tistory.com/
https://blog.naver.com/snake6862
'프로그래밍 > 백준' 카테고리의 다른 글
[C/C++] 백준 2438 별 찍기 - 1 (0) | 2022.06.06 |
---|---|
[파이썬(Python)] 백준 2476번 주사위 게임 (0) | 2021.10.11 |
[파이썬(Python)] 백준 10214 Baseball (0) | 2021.10.10 |
[파이썬(Python)] 백준 2855번 주사위 게임 (0) | 2021.10.10 |
[파이썬(Python)] 백준 10162번 전자레인지 (0) | 2021.10.08 |