728x90
반응형
SMALL
https://www.acmicpc.net/problem/10814
제출코드1
import sys
input = sys.stdin.readline
N = int(input())
N_list = []
for i in range(N):
x, y = input().split()
N_list.append((int(x),y,i))
N_list.sort(key = lambda x:(x[0],x[2]))
for x,y,i in N_list:
print(x,y)
접근 방법 및 풀이
이제 정렬 시 람다는 익숙해졌다.
하지만 가입한 순으로 하라는 거에서 뇌가 정지되었는데 N범위 동안 for문을 돌고 있을 때 i를 변수로 넣어서 N_list의 튜플에 추가하면 되겠구나 생각을 해봤다. 이렇게 풀어보니 통과였다.
근데 내가 너무 어렵게 푼거 같아 다른 사람의 코드를 찾아봤다.
그런데 파이썬의 sort함수는 안정정렬(Stable Sort)를 지원한다고 한다.
※안정정렬이란?
중복된 값을 입력 순서와 동일하게 정렬하는 것을 칭한다.
즉, 같은 값을 정렬할 때 원래 입력 순서가 보장되는 정렬 방식을 의미한다.
백준 예시를 살짝 바꿔 설명하면
#input
21 Junkyu
23 Sunyoung
21 Dohyun
이렇게 입력이 주어졌다고 하자
파이썬의 sort함수는 안정정렬을 지원하니 sort함수로 나이순으로 정렬하면
#output
21 JunKyu
21 Dohyun
23 Sunyoung
위와 같이 출력되는 것이다.
그렇게 코드를 조금 수정하고 다시 풀었다.
제출 코드2
import sys
input = sys.stdin.readline
N = int(input())
N_list = []
for _ in range(N):
x, y = input().split()
N_list.append((int(x),y))
N_list.sort(key = lambda x:x[0])
for x,y in N_list:
print(x,y)
똑같이 통과가 되는 것을 볼 수 있다.
728x90
반응형
LIST
'백준[파이썬]' 카테고리의 다른 글
[백준/Python] - 10815번 숫자 카드 (0) | 2025.03.28 |
---|---|
[백준/Python] - 18870 좌표 압축 (0) | 2025.03.27 |
[백준/Python] - 1181번 단어 정렬하기 (0) | 2025.03.25 |
[백준/Python] - 11650번 좌표 정렬하기 (0) | 2025.03.25 |
[백준/Python] 1157 단어공부 (0) | 2025.01.24 |