5635) 생일

CHOISUJIN·2024년 9월 12일
0

Baekjoon

목록 보기
4/10
post-thumbnail
post-custom-banner

📌 문제 탐색하기

  • 주어진 생년월일로
  • 가장 나이가 적은 사람과 가장 많은 사람 구하기
  • 연도가 같으면 생일로 구분!

가능한 시간복잡도

시간 제한 : 1초
1 ≤ N ≤ 100

sort() 메소드의 시간복잡도는 O(NlogN)

알고리즘 선택

정렬

📌 코드 설계하기

  1. 문제의 input 받기
  2. 조건에 맞게 정렬
    • yyyy(연도) 오름차순
    • mm(월) 오름차순
    • dd(일) 오름차순
  3. 출력
    • 가장 나이가 적은 사람의 이름
    • 가장 나이가 많은 사람의 이름

📌 시도 회차 수정 사항 (Optional)

📌 정답 코드

import sys

N = int(sys.stdin.readline())
arr = []

for i in range(N):
    name, dd, mm, yyyy = sys.stdin.readline().strip().split()
    arr.append([name, int(dd), int(mm), int(yyyy)])

# 정렬
arr.sort(key=lambda x: (x[3], x[2], x[1]))

print(arr[N-1][0])
print(arr[0][0])
  • 람다식 이용
import sys

N = int(sys.stdin.readline())
arr = []

for i in range(N):
    name, dd, mm, yyyy = sys.stdin.readline().strip().split()
    arr.append([int(yyyy), int(mm), int(dd), name])

# 정렬
arr.sort()

print(arr[N-1][0])
print(arr[0][0])
  • 리스트 저장 순서를 바꿔서 sort() 자체로 정렬
  • 이름이 같거나, 생일이 같은 사람은 없다는 조건 !
profile
매일매일 머리 터지는 중 ᕙ(•̀‸•́‶)ᕗ
post-custom-banner

0개의 댓글