[BOJ] 10814. 나이순 정렬 Python 풀이

2023. 1. 4. 21:45·Algorithm/BOJ

문제 출처 : https://www.acmicpc.net/problem/10814

더보기

문제

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

입력

첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000)

둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다.

출력

첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다.

예제 입력 1

3
21 Junkyu
21 Dohyun
20 Sunyoung

예제 출력 1

20 Sunyoung
21 Junkyu
21 Dohyun

풀이

# 나이순 정렬

n = int(input())
member_list = []

for i in range(n):
    age, name = input().split()
    member_list.append([int(age), name])

# 각 회원을 나이 순으로 정렬
member_list.sort(key=lambda member_list: member_list[0])

for i in range(0, n):
    print(member_list[i][0], member_list[i][1])
  1. 온라인 저지 회원의 수 n을 입력받습니다..
  2. 회원의 나이, 이름을 저장할 리스트 member_list를 초기화합니다.
  3. n만큼 반복하며 회원의 나이, 이름을 입력받고 member_list에 추가합니다. (단, 나이는 정렬 key값으로 사용할 것이므로 int형으로 변환합니다.)
  4. member_list를 나이값 순으로 정렬합니다.
    member_list.sort(key=lambda member_list: member_list[0])
    
    위 람다식을 이용해 member_list의 age값을 key값으로 member_list를 정렬할 수 있습니다. 이미 입력 순으로 리스트에 저장되어 있으므로 나이 순으로만 정렬하면 문제의 조건을 만족하게 됩니다.
  5. 각 항목을 나이, 이름의 형식으로 출력합니다.

 풀긴 했지만, 정말 당연한 부분에서 실수해서 헤맸었습니다. 바로 정렬 시 age를 키 값으로 사용하려면 int형으로 변환해주어야 한다는 점! 질문 게시판의 반례를 보고 나서야 깨달았습니다.

# 입력값
2
100 abc
2 def

# 출력값
100 abc
2 def

# 정답
2 def
100 abc

 위 반례를 보면, 분명 나이가 2인 def가 먼저 출력되어야 하는데 100 abc가 출력되는 것을 알 수 있습니다. 나이를 int형으로 바꾸어주지 않았을 때 생기는 Logical Error입니다. 100이 문자열이기 때문에 각각 대응되는 '1'과 '2'를 비교하고, 1이 더 낮은 값이므로 우선적으로 정렬됩니다.

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 11724. 연결 요소의 개수 Python 풀이  (0) 2023.04.14
[BOJ] 1012. 유기농 배추 Python 풀이  (0) 2023.04.05
[BOJ] 2003. 수들의 합 2 Python 풀이  (0) 2023.03.29
[BOJ] 1158. 요세푸스 문제 Python 풀이  (0) 2023.02.17
[BOJ] 9012. 괄호 Python 풀이  (0) 2023.01.05
'Algorithm/BOJ' 카테고리의 다른 글
  • [BOJ] 1012. 유기농 배추 Python 풀이
  • [BOJ] 2003. 수들의 합 2 Python 풀이
  • [BOJ] 1158. 요세푸스 문제 Python 풀이
  • [BOJ] 9012. 괄호 Python 풀이
짱다미
짱다미
고양이🐈 뜨개질🧶 게임🕹️🎮을 좋아하는 개발자
  • 짱다미
    저디벨
    짱다미
  • 전체
    오늘
    어제
    • 분류 전체보기 (13)
      • 개발이야기 (7)
        • 알아보자 (1)
        • JAVA (0)
        • Kotlin (0)
        • Python (1)
        • HTML, CSS (0)
        • JAVASCRIPT (3)
        • Linux (0)
        • Data Analysis (0)
      • Algorithm (6)
        • 알고리즘 정복기 (0)
        • BOJ (6)
      • 실수일지 (0)
      • 사는이야기 (0)
      • 독후감 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
    • 일상
  • 공지사항

  • 인기 글

  • 태그

    인공신경망
    boj
    SW 마에스트로
    알고리즘
    두 포인터
    web
    딥러닝
    대화형AI
    code
    소프트웨어 마에스트로
    너비우선탐색
    Algorithm
    ai모델
    코딩테스트
    python
    GPT-3
    백준
    BFS
    javascript
    ChatGPT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
짱다미
[BOJ] 10814. 나이순 정렬 Python 풀이
상단으로

티스토리툴바