본문 바로가기

# 02/Swift - CTP

[Swift] 코딩테스트 연습! Lv0. 문자열 밀기

반응형
/* 문자열 밀기

 - 문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 몇 번 밀어야 하는지 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
*/
extension String {
    subscript(_ range: CountableRange<Int>) -> String {
        let start = index(startIndex, offsetBy: max(0, range.lowerBound))
        let end = index(start, offsetBy: min(self.count - range.lowerBound,
                                             range.upperBound - range.lowerBound))
        return String(self[start..<end])
    }

    subscript(_ range: CountablePartialRangeFrom<Int>) -> String {
        let start = index(startIndex, offsetBy: max(0, range.lowerBound))
         return String(self[start...])
    }
}

func solution16(_ A:String, _ B:String) -> Int {
    if A == B {
        return 0
    }
    var count:Int = 0
    var str:String = A
    while count < A.count {
        count += 1
        str = String(str[(str.count-1)...]) + str
        str = str[0..<str.count-1]
        if str == B {
            return count
        }
    }
    
    return -1
}
반응형