알고리즘/백준(BOJ) 문제 풀이

[Python]백준 #10814 나이순 정렬(class2+)

gangmini 2022. 3. 12. 23:33
반응형

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

 

10814번: 나이순 정렬

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

www.acmicpc.net

  • 나이순 정렬
  • 나이 같으면 등록순 정렬(입력순)

 알고리즘

  • 정렬

✔ 접근방법

1. 나이를 기준으로 정렬 해야 한다고 접근

2. 한 줄에 공백을 기준으로 여러 단어를 한 묶음으로 하여 여러줄 입력받는 것에서 헤맴

-> 처음엔 딕셔너리 형식으로 입력 받았으나 나이가 먼저 입력값으로 들어가면서 key값이 되고 나이가 중복되면서 제대로 저장X (input().split()의 반환 형태에 대해 잘 알지 못해 발생한 문제)

3. 2차원 리스트로 입력받고 sorted()/sort() 를 사용해 나이를 기준(key)으로 지정해 정렬

 💡나이를 기준으로 정렬한다는 것은 정수를 기준으로 한다는 것이므로 반드시 int형으로 변환하여 정렬 기준으로 지정

 

  코드

N = int(input())
mem = list(input().split() for _ in range(N))
#mem.sort(key=lambda x:int(x[0])) #value값->age을 기준으로 정렬
mem = sorted(mem,key=lambda x:int(x[0])) #int형으로 바꿔줘 숫자를 기준으로 정렬해야 정답
for j in mem:
    print(j[0],j[1])

✔ 배운점/아쉬운점

1. input().split()을 하면 공백을 기준으로 문자가 잘려서 리스트로 저장 -> 반복문을 사용해 N번 반복하고 그 리스트들을 다시 list로 묶어 2차원 list를 만듬

2. 변수명.sort()  vs  sorted()

  - 변수명.sort() : 기존 자료구조를 변경

  - sorted() : 기존의 것은 변경X, 새로운 객체 반환

    sorted(iterable한 객체, key = 정렬 기준)   ex) sorted(mem, key=x:int(x[0]))  => 리스트 mem에서 원소 하나씩 꺼내서 매개변수 x로 받고, x의 0번째 원소를 int형으로 바꾼 것을 기준으로 정렬

  

3. 여전히 입력값을 받는 것에서 함수의 return 값을 제대로 이해하지 못해 유연하게 사용X

반응형