공부하기/백준

[Python] 백준 풀기 10814 - 나이순 정렬

XEV 2022. 10. 29. 20:04

파이썬 백준 10814번

실버5

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

 

10814번: 나이순 정렬

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

www.acmicpc.net

 

 

 

 

문제 보기

분류: 정렬

 

 

 

문제 풀기

string 으로 입력받은 값을 정렬하면서 실수하지 않는 것이 중요한것 같다.

예) 9, 10 의 경우. str 타입이면 1이 우선시 되어 10 - 9 로 정렬됨.

 

fnInputMember(N): 으로 모든 값을 str type 2차원 배열로 입력을 받는고 그 결과를 return 해 준다.

def fnInputMember(N):
    member_ls = []
    for _ in range(N):
        person = list(map(str, inputdata().split()))
        member_ls.append(person)
    return member_ls

 

fnSortByAge(member_ls): 으로 나이순으로 정렬하되 key 를 이용해서 나이인 x[0] 위치로만 정렬, 이때, 나이는 숫자로 바꾸어줘햐 하기에 int(x[0]) 로 변환하여 정렬한다.

def fnSortByAge(member_ls):
    sorted_ls = sorted(member_ls, key = lambda x: int(x[0]))
    return sorted_ls

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline

def fnInputMember(N):
    member_ls = []
    for _ in range(N):
        person = list(map(str, inputdata().split()))
        member_ls.append(person)
    return member_ls

def fnSortByAge(member_ls):
    sorted_ls = sorted(member_ls, key = lambda x: int(x[0]))
    return sorted_ls


if __name__ == "__main__":
    N = int(inputdata().strip())

    member_ls = fnInputMember(N)
    print(member_ls)            # test print
    
    sorted_ls = fnSortByAge(member_ls)
    print(sorted_ls)            # test print
    
    for srt in sorted_ls:
        print(" ".join(srt))



# 5
# 21 Junkyu
# 21 Dohyun
# 20 Sunyoung
# 100 Acmicpc
# 9 Backjoon

# [['21', 'Junkyu'], ['21', 'Dohyun'], ['20', 'Sunyoung'], ['100', 'Acmicpc'], ['9', 'Backjoon']]
# [['9', 'Backjoon'], ['20', 'Sunyoung'], ['21', 'Junkyu'], ['21', 'Dohyun'], ['100', 'Acmicpc']]

# 9 Backjoon
# 20 Sunyoung
# 21 Junkyu
# 21 Dohyun
# 100 Acmicpc