[프로그래머스] 튜플
👨🏻‍💻iOS 공부/Swift_알고리즘 풀이

[프로그래머스] 튜플

728x90
반응형

programmers.co.kr/learn/courses/30/lessons/64065?language=swift

 

코딩테스트 연습 - 튜플

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr

 

[프로그래머스] - 튜플

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
반응형