프로그래머스 - Swift algorithm - BALLOON 단어 찾기

2021. 8. 4. 17:09Developer.TokkiSea/Apple

반응형

 

 

 

"BAOOLLNNOLOLGBAX" 이런 형태의 문자가 입력되면

BALLOON을 몇개나 만들수 있는지를 알아내는 문제다.

 

C++의 char 정도로 for 문 돌면서 찾고 지우면

너무 쉽게 결과가 나올것 같다.

 

하지만 Swift 는 Charecter 와 String 의 사용이

자연스럽지 못해서 조금은 어려울 수 있다.

 

public func findBALLOON(_ S : inout String) -> Int {
        let searchArr : Array = ["B","A","L","L","O","O","N"]
        var foundCount : Int = 0
        var bRoop : Bool = true
        while(bRoop) {
            if !S.contains("B") { // 첫 글자 B 조차 없으면 시작도 하지 않는다.
                break
            }
            // BALLOON 순서대로 찾고 찾으면 글자는 바로바로 지운다.
            for char in searchArr.enumerated() {
                if S.contains(String(char.element)) {
                    let range: Range<String.Index> = S.range(of: char.element)!
                    let index: Int = S.distance(from: S.startIndex, to: range.lowerBound)
                    S.remove(at: range.lowerBound)
                    if char.offset == searchArr.count-1 {
                        foundCount += 1
                    }
                    continue
                }
                else {
                    bRoop = false
                    break
                }
            }
        }
        return foundCount
    }

 

String 인 S를 S[3] 식으로 쓸 수 없다.

원한다면 별도로 extension String { } 를 만들어서 쓰자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형