Koala - 9기/기초 알고리즘 스터디

[BOJ /Python] 10867 중복 빼고 정렬하기

코딩하는쉐프 2023. 1. 12. 23:22

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

 

10867번: 중복 빼고 정렬하기

첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다.

www.acmicpc.net

문제풀이

set을 이용해 중복을 삭제하고 오름차순으로 정렬 후 출력하면 되는 간단한 문제였다.

하지만 이 글을 작성하게된 이유는 문자열 정렬에 대한 실수를 공유하기 위해서이다.

처음에는 간단히 join으로 출력해야지~ 생각하고 string으로 입력을 받아 처리했다

n = int(input())
a = set(map(str,input().split()))
print(' '.join(sorted(list(a))))

하지만, 백준은 몇초 내로 틀렸다고 빨간불을 띄워줬다.

곰곰히 생각해본 결과 string으로 숫자를 입력해 정렬하게 되면 

['1', '5', '10'] 의 경우

['1', '10' ,'5'] 로 정렬되게 된다. 10에 들어있는 1이 5보다 먼저 나오기 때문이다.

따라서 int로 입력받아 for문을 통해 출력하니 정답이었다.

n = int(input())
a = set(map(int,input().split()))
for i in sorted(list(a)):
    print(i,end=' ')