반응형

c++로 백준 10814번 풀다가 python으로 풀고 싶었는데, 잘 모르겠어서 답 보고 풀었습니다. 제 코드는 항상 길고 복잡한데 왜 남들 코드는 열 줄 안에 끝나나요. 반성하면서 공부를 또 합니다.

 

10814번 바로가기

 

10814번: 나이순 정렬

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

www.acmicpc.net

 

n = int(input())
data = []
for i in range(n):
    data.append(list(input().split()))
data.sort(key=lambda x: int(x[0]))
for i, j in data:
    print(i, j)

 짧은 코드지만 공부할 것이 많았습니다. 

 data list에 append로 추가를 하는데, 그 안에 또 list를 넣었습니다. 입력받은 값을 split으로 나눠준 후 리스트로 만든 다음에 그 것을 data에 저장합니다. 

 그리고 data를 정렬하는데, 단순히 sort를 사용하는 것이 아닌 key 매개변수를 사용하였습니다. key 매개변수는 어떤 기준으로 정렬을 할 것인지 정합니다. 

 *lambda

plus_ten = lambda x : x+10이라고 할 때 plus_ten(3)을 출력하면 13이 나옵니다. def와 비슷하지만 더 간결하게 사용할 수 있는 장점이 있습니다. 위에서는 x[0]에는 나이가 있는데 나이를 기준으로 정렬을 할 것이라고 key로 알려줍니다. 그러면 나이를 기준대로 정렬을 하게 되며, 가입 순으로는 따로 정렬을 해줄 필요가 없습니다. 입력받은 순서가 가입 순이기 때문이죠.

 

 

반응형

+ Recent posts