티스토리 뷰
문제 설명
정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
"w" : n이 1 커집니다.
"s" : n이 1 작아집니다.
"d" : n이 10 커집니다.
"a" : n이 10 작아집니다.
위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.
제한 조건
제한사항
-100,000 ≤ n ≤ 100,000
1 ≤ control의 길이 ≤ 100,000
control은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다.
내 답안
func solution(_ n:Int, _ control:String) -> Int {
var result = n
for i in control {
switch i {
case "w": result += 1
case "s": result -= 1
case "d": result += 10
default: result -= 10
}
}
return result
}
접근 방법
다른 풀이
func solution(_ n:Int, _ control:String) -> Int {
let op: [Character: Int] = ["w": 1, "s": -1, "d": 10, "a": -10]
return n + control.reduce(0) { $0 + op[$1]! }
}
reduce 가 왜 생각이 안 났을까....
알게 된 것
'코딩테스트' 카테고리의 다른 글
Lv.0 swift 순서 바꾸기 (0) | 2024.03.21 |
---|---|
Lv.0 swift n개 간격의 원소들 (0) | 2024.03.20 |
Lv.0 swift 문자열 앞의 n글자 (1) | 2024.03.19 |
Lv.0 swift 제곱수 판별하기 (0) | 2024.03.18 |
Lv.0 swift 모음 제거 (0) | 2024.03.18 |
최근에 올라온 글