티스토리 뷰

코딩테스트

Lv.0 swift 수 조작하기

알롱도담쓰 2024. 3. 20. 17:23

 

문제 설명

정수 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
최근에 올라온 글