728x90
반응형
programmers.co.kr/learn/courses/30/lessons/64065?language=swift
s를 입력으로 받아 다음과 같은 결과를 내야하는데 순서는 아래와 같다.
1. {}로 둘러싸인 숫자를 배열로 변환해준다
2. 배열 내 원소의 크기 순으로 정렬해준다.
3. 순서대로 원소를 뽑아 결과 배열에 append한다 (단, 결과 배열에 없는 값이어야 한다.)
저 문자열을 배열로 변환하는데 조금 애를 먹기는 했으나...! map / filter / components로 어느정도 분리해내어 정리했다.
코드로 봐보자!
import Foundation
func solution(_ s:String) -> [Int] {
// 결과값을 담을 배열
var answer = [Int]()
// 문자열 -> 배열로 변환 중
var arr = s.components(separatedBy: "}")
.map {$0.replacingOccurrences(of:"{", with:"")}
.filter {!$0.isEmpty}
.map {$0.components(separatedBy: ",")}
.map {$0.filter {!$0.isEmpty}}
.sorted() {$0.count < $1.count}
// 비포함하는 원소만 append
for elements in arr {
for element in elements {
if !answer.contains(Int(element)!) {
answer.append(Int(element)!)
}
}
}
return answer
}
[ 프로세스 ]
* 위와 동일하다.
문자열을 정리하는 과정에서 components를 사용했는데 이번에 알게된 부분이 있다.
바로 하나의 원소로만 분리하는 것이 아닌 여러 값으로의 분리도 가능하다는 것..!
s.components(separatedBy: "},{")
s.components(separatedBy: ["{","}"])
// 이런식으로의 사용도 가능하다는 것을 이제 알았다..
문자열을 정제하고 전처리하는 부분은 계속 연습이 필요할 것 같다!
728x90
반응형