본문 바로가기
코딩테스트/코딩테스트 문제

코딩테스트 준비 - 백준10814번 나이순 정렬 풀이:파이썬 람다 리스트 정렬 (파이썬)

by 공부가싫다가도좋아 2021. 6. 6.
반응형

백준 10814번 풀이


문제풀러가기

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

 

10814번: 나이순 정렬

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

www.acmicpc.net


문제

 


풀이

1. 나이는 int 형으로 출력!!

*나이를 str로 출력하면 아무리 맞았어도 틀렸습니다가 뜹니다.

 

2. 리스트 정렬 sort사용 or lambda 사용


코드 1

import sys
N=int(sys.stdin.readline())

arr=[]

for i in range (N): 
  a,b = map(str,sys.stdin.readline().split()) 
  arr.append([int(a), i, b]) 
#i추가 이유는 입력 받은 순서대로 정렬하기 위해

arr.sort()
for i in range (len(arr)): 
  print("%d %s"%(arr[i][0], arr[i][2]))

 

코드 2

import sys
N=int(sys.stdin.readline())

arr=[]

for i in range (N): 
  a,b = map(str,sys.stdin.readline().split()) 
  arr.append([int(a), b]) 

arr.sort(key=lambda x:x[0])

for i in arr:
  print(*i, sep=" ") #*i는 리스트 형식 없애줌

1번 코드 풀이

위 코드에서 arr.append([int(a), i ,b])의 i를 넣지 않을 시,

나이가 정렬된 후, 뒤에 이름 알파벳이 정렬되기 때문에, 입력 순서대로의 정렬을 위해서 i를 추가해줌.

 

2번 코드 풀이

arr.sort(key=lambda x:x[0])에서 arr[i][0]번째 위치 순으로 정렬

=> sorted(arr, key=lambda x:x[0])으로 대체 가능

예제1

arr = [(1,3), (5,2), (2,3), (10,6), (-3, 2), (5,1), (10,4), (10, -3)]

arr.sort(key=lambda x:x[0])

print(arr)

#결과: [(-3, 2), (1, 3), (2, 3), (5, 2), (5, 1), (10, 6), (10, 4), (10, -3)]

 

예제2

arr = [(1,3), (5,2), (2,3), (10,6), (-3, 2), (5,1), (10,4), (10, -3)]

arr.sort(key=lambda x:x[1])

print(arr)

#결과: [(10, -3), (5, 1), (5, 2), (-3, 2), (1, 3), (2, 3), (10, 4), (10, 6)]
반응형

댓글