꾸준히 합시다

백준 파이썬 5635번: 생일 본문

코딩 테스트 문제 풀이

백준 파이썬 5635번: 생일

tturbo0824 2021. 3. 6. 08:24

www.acmicpc.net/problem/5635

 

5635번: 생일

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

www.acmicpc.net

문제 유형: 구현, 정렬

 

# Solution 1

import sys

n = int(sys.stdin.readline())

arr = []

for _ in range(n):
    data = 0
    name, d, m, y = list(map(str, sys.stdin.readline().strip().split(' ')))
    if len(d) == 1:
        d = '0' + d
    if len(m) == 1:
        m = '0' + m
    arr.append((name, y + m + d))

arr = sorted(arr, key=lambda x : int(x[1]))
print(arr[-1][0])
print(arr[0][0])

우선 이름, 일, 월, 연도를 이름, YYYYMMDD 형식으로 저장한다. 형식을 맞추기 위해 위해 월과 일이 한 자릿수(=길이가 1) 일 경우 앞에 0을 붙여준다. 날짜를 기준으로 정렬해준 뒤 새로 만들어진 리스트를 출력해보면 아래와 같다.

 

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

 

여기서 가장 어린 사람은 마지막 아이템의 인덱스 0번, 가장 나이 많은 사람은 첫 번째 아이템의 인덱스 0번을 출력해주면 된다.

Comments