프로그래밍/백준

[파이썬(Python)] 백준 11557번 Yangjojang of The Year

정정훈훈 2021. 10. 11. 17:45
반응형

백준 11557번은 학교별로 마신 술의 양을 비교해서 가장 많이 마신 학교를 출력하는 문제입니다.

저는 중첩 반복문을 사용했습니다.

 

 

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

 

11557번: Yangjojang of The Year

입학 OT때 누구보다도 남다르게 놀았던 당신은 자연스럽게 1학년 과대를 역임하게 되었다. 타교와의 조인트 엠티를 기획하려는 당신은 근처에 있는 학교 중 어느 학교가 술을 가장 많이 먹는지

www.acmicpc.net

 

 

 

<코드>

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/ 

 

키보드 꾹꾹이하는 대학생

 

like-a-happy-cat.tistory.com

 

 

https://blog.naver.com/snake6862

 

정훈 블로그 : 네이버 블로그

 

 

반응형