본문 바로가기
Algorithm/알고리즘 문제풀이

오늘의 알고리즘(4월 19일)

by devraphy 2021. 4. 19.

1. 백준, 나이순 정렬, 10814번

 

www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net


2. 생각해보자

a) 기본조건

  • 첫 입력값 N은 주어질 데이터의 개수
  • N개의 나이와 이름을 한 쌍으로 하는 데이터가 주어진다
  • 나이를 기준으로 오름차순 정렬시킨다. 
  • 나이가 같으면 가입한 순서로 정렬시킨다. 

 

b) 이렇게 풀면 될까?

  • 튜플을 이용하여 데이터의 짝을 형성시킨다.
  • 나이를 기준으로 정렬한다.
  • 나이가 같은 경우, 입력된 순서를 기준으로 정렬한다.

3. 해설 및 코드분석

n = int(input())

array = []

for _ in range(n):
    data = input().split(' ')
    array.append((int(data[0]), data[1])) # 입력값을 튜플 형식으로 저장

array = sorted(array, key=lambda x: x[0])
# 람다식에서 x = array를 의미한다. 
# key는 정렬 기준값이 된다. 
# x[0]은 array[0]을 의미하며, array[0]의 index값이 key에 저장된다. 
# array[0]의 index값 = key 값 = 정렬 기준값

for i in array:
    print(i[0], i[1])

 

댓글