새소식

⌨️ Algorithms/백준

[Python] 백준 5635번_생일

2023. 3. 23. 22:05

  • -

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

 

5635번: 생일

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

www.acmicpc.net

 

  • 어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하기
  • 입력
    • 첫째 줄에 반에 있는 학생의 수 n이 주어짐 (1 ≤ n ≤ 100)
    • 다음 n개 줄에는 각 학생의 이름과 생일이 "이름 dd mm yyyy"와 같은 형식으로 주어짐
    • 이름은 그 학생의 이름이며, 최대 15글자로 이루어져 있음
    • dd mm yyyy는 생일 일, 월, 연도 (1990 ≤ yyyy ≤ 2010, 1 ≤ mm ≤ 12, 1 ≤ dd ≤ 31)
    • 주어지는 생일은 올바른 날짜이며, 연, 월 일은 0으로 시작하지 않음
    • 이름이 같거나, 생일이 같은 사람은 없음
  • 출력
    • 첫째 줄에 가장 나이가 적은 사람의 이름, 둘째 줄에 가장 나이가 많은 사람 이름을 출력
  • 시간 제한: 1초
  • 메모리 제한: 128 MB

 

"""
입출력 예시)

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

 

 

## 의사코드 ##

# 리스트에 저장 (이름, 일, 월, 연도)
#li.append((name, int(day), int(month), int(year)))

# 생일 순으로 오름차순 정렬: 연도 -> 월 -> 일 순서
#li.sort(key=lambda x: (x[3], x[2], x[1]))

# 가장 나이가 적은 사람의 이름
#print(li[-1][0])
# 가장 나이가 많은 사람의 이름
#print(li[0][0])

 

 

 

 

n = int(input())
li = [] 
for _ in range(n):
    name, day, month, year = input().split()
    li.append((name, int(day), int(month), int(year)))

# 생일 순으로 오름차순 정렬
li.sort(key=lambda x: (x[3], x[2], x[1]))

# 가장 나이가 적은 사람의 이름
print(li[-1][0])
# 가장 나이가 많은 사람의 이름
print(li[0][0])

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!