https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
문제접근
문제를 보았을 때 간단한 문제라고 생각했고 가볍게 풀고 넘어가려고 했는데 왼걸 시간 내에 풀지 못했다.
배열을 만들어서 조건을 주어 정렬하려고 했는데 sort() 매소드에 대해서 잘 몰라서 코드가 작성하기 힘들었다...
그래서!!! 공부했다!
https://h2kangrok.tistory.com/23
[Swift] 배열 정렬 sort와 sorted
공식문서에는 sort()는 컬렉션을 제자리에 정렬합니다.라고 한다. 내가 하고 싶은 것은 배열에서 정렬을 하고 싶은 거고 배열은 컬렉션 타입이니깐 잘 찾은 거 같다!! comparable이 메서드를 호출하
h2kangrok.tistory.com
정답풀이
import Foundation
let n = Int(readLine()!)!
var words: [String] = []
for _ in 0..<n {
words.append(readLine()!)
}
words = Array(Set(words))
words.sort { $0.count == $1.count ? $0 < $1 : $0.count < $1.count }
words.forEach{ print($0) }
코드는 간단하다.
let n = Int(readLine()!)!
var words: [String] = []
먼저 단어의 개수를 받는다.
입력받은 단어들을 넣어줄 배열을 생성해 준다.
for _ in 0..<n {
words.append(readLine()!)
}
반복문을 이용해서 단어들을 받는 즉시 words 배열에 넣어준다,
여기서부터 핵심 코드
words = Array(Set(words))
words.sort { $0.count == $1.count ? $0 < $1 : $0.count < $1.count }
문제에 조건에 중복된 단어는 하나만 남기고 제거를 해야 한다.
우리가 아는 것은 중복을 제거라려면 Set을 사용해야 한다!
words 배열에서 중복된 단어를 제거를 우선 해준다.
여기서 배열을
words = Array()
이렇게 사용할 수 있는 건 처음 알았다!
words.sort { $0.count == $1.count ? $0 < $1 : $0.count < $1.count }
여기서는 이제 단어를 조건에 맞게 정렬해 주는 코드인데
sort() 메서드의 클로저로 해당 조건을 작성해 준다.
$0.count == $1.count를 통해 두 문자열의 길이를 비교를 한다!
만약!! 두 길이가 같다면 $0 < $1 알파벳 순으로 순서를 비교해서 정렬하고
만약!! 두 길이가 다르다면 $0.count < $1.count 단어의 길이를 비교해서 정렬한다.
삼황연산자를 이용해서 간단하게 작성을 했다.
만약 내가 삼항연산자를 모른다면!!
https://h2kangrok.tistory.com/14
[Swift] 삼항연산자
let age: Int = 15 if age >= 20 { print("20 이상입니다.") } else { print("20보다 미만입니다.") } // 20보다 미만입니다. 보통 if 조건문을 작성할 때 모습이다. 삼항연산자는 if ~ else 구문을 한 줄로 쓸 수 있다.
h2kangrok.tistory.com
words.forEach{ print($0) }
그 후 forEach를 사용해서 words 배열을 순서대로 print 해준다.
코테공부는 항상 어렵고 항상 모르는 거 같다.... 그러기에는 내가 열심히 하지 않는다!
열심히 좀 하자!! 🔥
그래도 하나 풀고 모르는 거 알아가면 재미있잖아 ,,
참고 자료
https://dev-mandos.tistory.com/135
'Algorithm' 카테고리의 다른 글
| [Algorithm] Swift 백준 1676번 (2) | 2024.03.15 |
|---|---|
| [Algorithm] Swift 백준 1259번 (1) | 2024.03.09 |
| [Algorithm] Swift 백준 1018번 (1) | 2024.02.05 |
| [Algorithm] Swift 백준 1157번 (3) | 2024.01.09 |
| [Algorithm] Swift 백준 14467번 (3) | 2023.11.18 |