본문 바로가기

PS/백준

[BOJ] 백준 1181 단어 정렬 (Swift)

반응형

문제

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

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

풀이

문제에 나타난 조건에 따라 정렬해주면 됩니다.
단, 중복된 단어를 제거해야 하므로 Set 자료형에 넣어준 후, 다시 Array로 만들어주는 작업이 필요합니다.

그 이후, sort 메서드의 클로저로 해당 조건을 작성해줍시다.

해당 조건은 길이가 같으면 사전순, 다르다면 짧은 것으로 정렬해주면 됩니다.
sort의 클로저 구문

{ $0.count == $1.count (길이가 같다면) ? $0 < $1 (사전순 정렬) : (다르다면) $0.count < $1.count (길이가 짧은 순으로 오름차순) }


과 같이 작성하였습니다.

소스코드

후기

정렬을 하는 조건을 잘 작성한다면 쉽게 풀 수 있는 문제입니다.
클로저 구문안에 if문을 사용할 수도 있지만, 3항 연산자로도 충분히 이해하기 쉬울 것이라고 생각해서
저는 3항 연산자로 작성하였습니다.

반응형