본문 바로가기

Univ/Python Programming

[문제 09] 배열에서 중복 제거하기 - Python 풀이

주어진 정수 배열에서 중복된 값을 제거하고, 남은 값을 오름차순으로 정렬하여 출력하는 프로그램을 작성한다. 배열의 크기는 0 이상 100 이하이다.

입력 예시

첫째 줄에 배열의 크기 N이 주어진다. 둘째 줄에 N개의 정수가 공백으로 구분되어 주어진다.

출력 예시

중복을 제거한 뒤 오름차순으로 정렬된 정수들을 공백으로 구분해 출력한다.

예제 테스트케이스

예제 1

입력 예시
출력 예시
6
4 5 6 5 4 3
3 4 5 6

예제 2

입력 예시
출력 예시
5
1 1 1 1 1
1

 


코드

N = int(input())

if N > 0:
    arr = list(map(int, input().split()))
    result = sorted(set(arr))
    print(*result)

1. 코드 동작 설명

  • 정수 N을 입력받는다.
  • N이 0보다 큰 경우에만 배열을 입력받는다.
  • 입력된 배열에서 set을 사용하여 중복을 제거한다.
  • 중복이 제거된 값을 sorted로 오름차순 정렬한다.
  • 결과를 공백으로 구분하여 출력한다.

2. 문법 설명

int()

int(input())
  • 문자열을 정수형으로 변환하는 함수
  • 사용 형태:
int(문자열)

map()

map(int, input().split())
  • iterable의 각 요소에 함수를 적용하는 함수
  • 사용 형태:
map(함수, iterable)

list()

list(map(int, input().split()))
  • iterable을 리스트로 변환하는 함수
  • 사용 형태:
list(iterable)

set()

set(arr)
  • 중복된 값을 제거하는 자료형
  • 사용 형태:
set(리스트)

sorted()

sorted(set(arr))
  • 데이터를 오름차순으로 정렬하는 함수
  • 사용 형태:
sorted(iterable)

print() 언패킹

print(*result)
  • 리스트의 요소를 공백으로 구분하여 출력
  • 사용 형태:
print(*리스트)

3. 실수 포인트 (핵심만)

N = 0인데 배열 입력 받는 경우

arr = list(map(int, input().split()))
  • 입력 줄이 없어 EOFError 발생

set만 사용하고 정렬하지 않는 경우

result = set(arr)
  • 순서가 보장되지 않아 오답

리스트 그대로 출력

print(result)
  • [1, 2, 3] 형태로 출력되어 형식 오류

split() 괄호 누락

input().split   # 잘못된 형태
  • 함수가 실행되지 않아 오류 발생

4. 핵심 정리

  • set으로 중복 제거 후 sorted로 정렬한다.
  • 출력은 print(*리스트) 형태로 공백 구분해야 한다.