본문 바로가기
알고리즘/배열 \ 정렬

#18 [파이썬] 백준 10814번: 나이순 정렬

by 채채씨 2021. 4. 21.
728x90
반응형

<문제>

www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

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

www.acmicpc.net


 

<소스코드>

import sys

t = int(input().rstrip())
lst = []

for _ in range(t):
    lst.append(list(sys.stdin.readline().split()))
lst.sort(key = lambda x: int(x[0]))

for i in range(t):
    print(lst[i][0], lst[i][1])

 

<NOTE>

1. 리스트 내포(List comprehensive)

리스트 내포란 for문과 if문을 한 라인에 작성하여 코드의 간결화하고 실행속도를 높이는 기법이다.

 

1) 기본 반복문

: 리스트명 = [반환식 for 변수 in iteration]

a = [10, 20, 30, 40, 50]
b = [i*100 for i in a]

print(b) #[1000, 2000, 3000, 4000, 5000]

2) 조건 반복문

: 리스트명 = [반환식 for 변수 in iteration 조건문]

a = 10, 20, 30, 40, 50
b = [i*(1/10) for i in a if i%2 == 0]

print(b) #[2, 4]

3) 이중 반복문

: 리스트명 = [반환식 for 변수1 in iteration for 변수2 in iteration]

a = [x+y for x in range(1, 3) for y in range(1, 5)]

print(a) #[2, 3, 4, 5, 3, 4, 5, 6,] 

 

2. 람다 표현식(Lambda expression)

 : lambda 매개변수: 반환식

#변수 할당
a = lambda x: x+10

print(a(1)) #11


#변수 없이 인자값 바로 적용
print((lambda x: x+10)(1)) #11

 

 

3. 정렬

보통 sorted() 또는 .sort()를 사용한다. key인자에는 무엇을 기준으로 정렬할 것인지 작성할 수 있다.

a = [[1, 3], [0, 5], [5, 2], [5, 3]]

a.sort(key = lambda x : x[0])
print(a) #[[0, 5], [1, 3], [5, 2], [5, 3]]

a.sort(key = lambda x: x[1])
print(a) #[[5, 2], [1, 3], [5, 3], [0, 5]] 

#첫번째 인자를 기준으로 오름차순을 고려한 다음 두번째 인자를 기준으로 내림차순 #튜플이용
a.sort(key = lambda x: (x[0], -x[1])) #minus기호 붙이면 내림차순
print(a) #[[0, 5], [1, 3], [5, 3], [5, 2]]

 

728x90
반응형

댓글