공부하기/백준

[Python] 백준 풀기 5635 - 생일

XEV 2022. 12. 27. 22:35

파이썬 백준 5635번

실버 5

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

 

5635번: 생일

어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 문자열, 정렬

 

 

 

 

 

문제 풀기

분할되어있는 일, 월, 년 숫자를 공백없이 년월일(20221227) 8자리 숫자로 붙이고 이름과 함께 리스트에 저장한다.

문자형 숫자로 된 생일을 정렬하여 가장 나이가 많은 사람, 가장 나이가 적은 사람을 출력한다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline


def fnRearrange():
    restdt_info = []
    
    if len(stdt_info[2]) == 1:              ## '일' 자리가 한자리 숫자 일때 앞에 0 을 추가.
        stdt_info[2] = '0' + stdt_info[2]
    if len(stdt_info[1]) == 1:              ## '월' 자리가 한자리 숫자 일때 앞에 0 을 추가.
        stdt_info[1] = '0' + stdt_info[1]
        
    restdt_info.append(stdt_info[3] + stdt_info[2] + stdt_info[1])          ## 년월일 순서로 합쳐서 표기 '20221227'.
    restdt_info.append(stdt_info[0])
    
    student_ls.append(restdt_info)

def fnBirthday():
    student_ls.sort()                       ## index 0 에 대해 오름차순 정렬.
    
    print(student_ls[-1][1])                ## 가장 나이가 많은 사람.
    print(student_ls[0][1])                 ## 가장 나이가 적은 사람.


if __name__ == "__main__":
    n = int(inputdata().strip())
    student_ls = []
    for _ in range(n):
        stdt_info = list(map(str, inputdata().split()))
        fnRearrange()
    
    fnBirthday()

 

 

 

 

 

추가 하기

예제 입력에 대한 출력

import sys
inputdata = sys.stdin.readline


def fnRearrange():
    restdt_info = []
    
    if len(stdt_info[2]) == 1:              ## '일' 자리가 한자리 숫자 일때 앞에 0 을 추가.
        stdt_info[2] = '0' + stdt_info[2]
    if len(stdt_info[1]) == 1:              ## '월' 자리가 한자리 숫자 일때 앞에 0 을 추가.
        stdt_info[1] = '0' + stdt_info[1]
        
    restdt_info.append(stdt_info[3] + stdt_info[2] + stdt_info[1])          ## 년월일 순서로 합쳐서 표기 '20221227'.
    restdt_info.append(stdt_info[0])
    # print(restdt_info)          # test print
    
    student_ls.append(restdt_info)

def fnBirthday():
    student_ls.sort()                       ## index 0 에 대해 오름차순 정렬.
    print(student_ls)           # test print
    
    print(student_ls[-1][1])                ## 가장 나이가 많은 사람.
    print(student_ls[0][1])                 ## 가장 나이가 적은 사람.


if __name__ == "__main__":
    n = int(inputdata().strip())
    student_ls = []
    for _ in range(n):
        stdt_info = list(map(str, inputdata().split()))
        # print(stdt_info)            # test print
        fnRearrange()
    
    fnBirthday()



# 5
# Mickey 1 10 1991
# Alice 30 12 1990
# Tom 15 8 1993
# Jerry 18 9 1990
# Garfield 20 9 1990

# [['19900918', 'Jerry'], ['19900920', 'Garfield'], ['19901230', 'Alice'], ['19911001', 'Mickey'], ['19930815', 'Tom']]

# Tom
# Jerry