https://www.acmicpc.net/problem/1181
📌 문제 탐색하기
- 시간 제한이 1초니까 최대 2중 for문까지만 가능하다.
- 반에 있는 학생 수 n 입력으로 주어지고
- 이름, dd, mm, yyyy가 주어져서 나이 가장 적은 사람과 가장 많은 사람의 이름을 출력하는 것이군!
- 각각 하나를 배열로 저장하려면 2차원 배열이어야하는데 다른 방법없나? + 입력 받을 때마다 가장 나이가 많은 사람과 적은 사람을 저장할 수 없나?
- 날짜가 거꾸로 주어져 있으니까 yyyymmdd로 바꿔서 저장하고 int로 바꿔서 매턴마다 비교해서 이름 저장해야겠다!
📌 코드 설계하기
- 입력 n 받고
- for문 돌면서 입력 받을 때 split()으로 받는다. 그리고 다시 date라는 변수에 yyyymmdd를 저장한다.
- 매 생일이 입력될 때마다 min값과 max값과 비교해서 min값보다 더 작거나 max값보다 더 클 경우 업데이트하면서 저장하자.
- 아! min, max값들이 저장될 때 min_name과 max_name 변수를 둬서 이름까지 같이 관리하자.
- 마지막에 min_name, max_name 뜨면 성공!
📌 정답 코드
n = int(input())
max = 0
min = 20110000
max_name = ''
min_name = ''
for i in range(n):
name, dd, mm, yyyy = input().split()
if len(mm) != 2:
mm = "0"+ mm
if len(dd) != 2:
dd = "0"+ dd
date =int(yyyy+mm+dd)
if max < date:
max = date
max_name = name
if min > date:
min = date
min_name = name
print(max_name)
print(min_name)
'개발 > python' 카테고리의 다른 글
[백준 2947번] 나무 조각 - python (1) | 2025.08.16 |
---|---|
[백준 25305번] 커트라인 - python (3) | 2025.08.15 |
[백준 1181번] 단어 정렬 - python (3) | 2025.08.13 |
[백준 10814번] 나이순 정렬 - python (0) | 2025.08.12 |
[백준 2309번] 일곱 난쟁이 - python (1) | 2025.08.11 |