드디어 나도 split을 써보는구나 ㅠㅠㅠㅠ

c++에서 swift로 언어를 갈아타고 있는데, STL에 익숙지 않아 여러 가지를 검색해가면서 코테 문제를 풀고 있다.

 

오늘 배운건 .split(whereSeparator: {}) 이다. 

C++ 스플릿처럼 기준이 되는 문자를 제외한 요소를 배열로 만들어 리턴한다.

그리고 .enumuerated() 는 index와 element로 요소 하나하나에 접근할 수 있게 해주는 매지컬한 메서드이다.

 

아무튼.. 이를 이용해 아래와 같이 풀어봤으니 한번 돌려보자.

print 하는 부분을 따라가다 보면 이해가 될 것이다 :)

 

func solution(_ dartResult:String) -> Int {
    
    var numbers = dartResult.split(whereSeparator: { $0.isLetter || $0 == "*" || $0 == "#"})
    var letters = dartResult.split(whereSeparator: { $0.isNumber })

    print (numbers)
    print (letters)
    
    var answer = numbers.map{ Int($0)! }
    
    print(answer)
    
    for (index, element) in letters.enumerated() {
        for c in element {
            switch c {
                case "D":
                    answer[index] = answer[index] * answer[index]
                case "T":
                    answer[index] = answer[index] * answer[index] * answer[index]
                case "*":
                    if (index != 0) {
                        answer[index] *= 2
                        answer[index - 1] *= 2
                    } else {
                        answer[index] *= 2
                    }
                case "#":
                    answer[index] *= -1
                default:
                    break
            }
        }
    }
    
    return answer.reduce(0, +)
}

 

통과~

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom