문제
어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오.
조건 및 입출력
1. 첫째 줄에 반에 있는 학생의 수 n이 주어진다. (1 ≤ n ≤ 100)
다음 n개 줄에는 각 학생의 이름과 생일이 "이름 dd mm yyyy"와 같은 형식으로 주어진다. 이름은 그 학생의 이름이며, 최대 15글자로 이루어져 있다. dd mm yyyy는 생일 일, 월, 연도이다. (1990 ≤ yyyy ≤ 2010, 1 ≤ mm ≤ 12, 1 ≤ dd ≤ 31) 주어지는 생일은 올바른 날짜이며, 연, 월 일은 0으로 시작하지 않는다.
이름이 같거나, 생일이 같은 사람은 없다.
2. 첫째 줄에 가장 나이가 적은 사람의 이름, 둘째 줄에 가장 나이가 많은 사람 이름을 출력한다.
코드 (Python 3)
# 입력부
trys=int(input()); people=[];
for i in range(trys):
people.append(list(input().split()));
# 처리부
people.sort(key=lambda x:(int(x[3]),int(x[2]),int(x[1])));
# 출력부
print(people[trys-1][0]);
print(people[0][0]);
풀이 과정
값을 입력 받은 뒤, 정렬을 한다. 이 때 lambda 함수를 사용하여, 년/월/일 기준으로 정렬하였다.
나이가 가장 많은 사람은 제일 뒤쪽 리스트에 있을 것이며, 나이가 가장 작은 사람은 가장 앞쪽에 위치 해 있다.
이를 구현하였다.
여담
매일 백준 하나씩 풀고 있지만, 블로그에 글 올리는 건 소홀 해 졌다.
아무래도 학기가 시작되고 정신없이 살다보니 그렇게 된 것 같다. 앞으로 시간이 나면 짬짬이 올리려고는 하지만, 할게 너무 많아 아무래도 당분간은 소홀 해 질지도 모르겠다.
| 코드가 이상하거나, 이해되지 않는 부분이 있다면 댓글 남겨주세요 ! + 더 좋은 풀이 방법이 있다면 알려주세요 :) |
'Programming > Python' 카테고리의 다른 글
| [백준] 10845번 : 큐 (Python / 파이썬) (0) | 2023.06.26 |
|---|---|
| [백준] 5893번 : 17배 (Python / 파이썬) (0) | 2023.03.25 |
| [백준] 2474번 : 피보나치 수 (Python / 파이썬) (0) | 2023.02.13 |
| [백준] 11651번 : 좌표 정렬하기 2 (Python / 파이썬) (0) | 2023.02.12 |
| [백준] 1267번 : 핸드폰 요금 (Python / 파이썬) (0) | 2023.02.10 |