드디어 나도 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, +)
}
통과~
'Algorithm' 카테고리의 다른 글
프로그래머스 - 소수 찾기 [Swift] (0) | 2021.07.03 |
---|---|
programmers - 나누어 떨어지는 숫자 배열 [Swift] (0) | 2021.07.02 |
프로그래머스 - 비밀지도 [Swift] (0) | 2021.06.30 |
프로그래머스 - 두 개 뽑아서 더하기 [Swift] (0) | 2021.06.29 |
프로그래머스 - 3진법 뒤집기 [Swift] (0) | 2021.06.27 |
최근댓글