본문 바로가기

백준 write-up/정렬 & 그리디

[백준] 중복 빼고 정렬하기 : 10867번 - Python

728x90
반응형

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

 

10867번: 중복 빼고 정렬하기

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

www.acmicpc.net

 

 

 

문제를 풀면서 몰랐던 개념

 

 [Python] 리스트 중복 제거

-> set 자료형(집합)을 이용해야 한다.

: 리스트의 중복을 제거하되 기존 리스트의 순서를 유지하는 경우에는 여러가지 방법이 존재하는데, 그 중 sorted() 함수를 이용하는 방법에 대해 알게 되었다.

L = [2, 3, 2, 2, 4, 5, 1]
L = sorted(set(L))
print(L)

>>> [1, 2, 3, 4, 5]

 

 

 

문제의 접근 방법

 

- n개의 정수 입력 받아 리스트에 저장하기

- 중복을 제거하고 정렬하여 출력하기

 

 

 

내가 막혔던 부분

 

리스트 중복 제거 방법을 알지 못함.

 

 

 

문제 풀이 방법

 

(1) 입력 받을 정수의 개수 n개 입력 받기.

(2) map함수를 사용해서 n개의 정수 따로따로 입력받아 리스트 L에 저장.

(3) 리스트 L을 set 자료형을 이용해서 중복을 제거한 후, sorted 함수를 이용해서 정렬.

 

 

소스코드

n = int(input())
L = list(map(int, input().split()))

if n == len(L) and (1<=n<=100,000):
    L = sorted(set(L))
    for i in L:
        print(i, end=' ')
728x90
반응형