본문 바로가기

코딩

[Python] 백준 #10814. 나이순 정렬

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

 

10814번: 나이순 정렬

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

www.acmicpc.net

# 10814 - Python 3

2가지 풀이 방법으로 정렬하여 풀어보았습니다.

 

sol 1)

import sys

input = sys.stdin.readline

n = int(input())

arr = []

for i in range(n):
    age, name = map(str, input().split())
    arr.append([int(age), i, name]) # 입력 받은 순서대로 뽑기 위해 i도 arr에 붙임

arr.sort()

for i in range(n):
    print(arr[i][0], arr[i][2])

<line 11>

- arr[1]에 입력 받은 순서 저장

: 이후 나이가 같은 경우, 입력 받은 순서를 차후 출력 기준으로 삼기 위함.

 

 

sol 2)

import sys

input = sys.stdin.readline

n = int(input())

arr= []

for _ in range(n):
    age, name = map(str, input().split())
    arr.append([int(age), name])

arr.sort(key = lambda arr : arr[0]) # lambda를 이용하여 정렬 기준을 age로 함

for i in arr:
    print(*i, end = " ") # *i에서 *s는 출력 시 list의 형식을 없애줌
    print()

< line 13 >

- sort() 함수에서 key를 lambda로 설정

: arr[0]을 기준으로 하여 정렬

: arr[0] 대신 -arr[0]으로 설정할 시 오름차순 대신 내림차순으로 변화

     ex) arr.sort(key = lambda arr : -arr[0]) : arr[0] 기준 내림차순 정렬

           arr.sort(key = lambda arr : arr[0]) : arr[0] 기준 오름차순 정렬

'코딩' 카테고리의 다른 글

[Python] 백준 #7568. 덩치  (0) 2023.03.10
[Python] 백준 #11650. 좌표 정렬하기  (0) 2023.03.10
[Python] 백준 #2751. 수 정렬하기 2  (0) 2023.03.10
[Python] 백준 #1181. 단어 정렬  (0) 2023.03.10
[Python] 백준 #2108. 통계학  (0) 2023.03.05