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

[BOJ/python] 4458번 첫 글자를 대문자로

ddingmin00 2022. 1. 23. 19:54

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

 

10867번: 중복 빼고 정렬하기

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

www.acmicpc.net

 

문제 분석

이 문제는 중복된 정수를 제외하고 오름차순으로 정렬한 결과를 출력하는 간단한 문제이다.

 

 

 

코드

n = int(input())
 
arr = set(map(int,input().split()))
arr = sorted(arr)
print(" ".join(map(str,arr)))

 

 

 

문제풀이

이번 스터디를 통해 배우지 않았더라면 리스트를 사용하여 조건문을 활용해 중복된 값은 넣지않는 코드로 구현을 하였겠지만, 이번에 set이라는 집합 자료형을 배웠다. 

a = set()
b = {1,2,3,3} #output: {1, 2, 3}

set 형은 다음과 같이 선언할 수 있으며 딕셔너리 자료형과 매우 유사하다.

set형은 중복된 값들은 제거되기 때문에 b를 출력하게 되면 {1, 2, 3} 값이 출력된다.

 

이를 이용해 arr에 값들을 set형으로 받아 중복된 값을 제거한 후 

sorted 함수를 통해 오름차순으로 정렬해 준 뒤

출력해주면 된다.

 

하지만 출력할 때 주의사항으로 join함수를 사용하여 list와 같은 집합 자료형을 출력할 때 값들의 형식이 int형이면 오류가 뜨게 된다. 이 때문에 join(map(str,arr))를 통해 해결해 줄 수 있다.

 

원문

https://ddingmin00.tistory.com/16