개발자가 되

프로그래머스 Lv.0

Lv.0 수 조작하기 1

dltjdud 2025. 1. 28. 22:13

문제설명

정수 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"로 이루어진 문자열입니다.

입출력 

n control result
0 "wsdawsdassw" -1

 

입출력 예 설명

입출력 예 #1
수 n은 control에 따라 다음과 같은 순서로 변하게 됩니다.
0 → 1 → 0 → 10 → 0 → 1 → 0 → 10 → 0 → -1 → -2 → -1
따라서 -1을 return 합니다.

 

풀이

 

JAVA

class Solution {
    public int solution(int n, String control) {
        int answer = n;
        for(char ch : control.toCharArray()) {
            switch(ch) {
                case 'w' : answer += 1;
                    break;
                case 's' : answer -= 1;
                    break;
                case 'd' : answer += 10;
                    break;
                case 'a' : answer -= 10;
                    break;
            }
        }
        return answer;
    }
}

 

Python

def solution(n, control):
    answer = 0
    for i in control:
        if i == 'w':
            n += 1
        elif i == 's':
            n -= 1
        elif i == 'd':
            n += 10
        elif i == 'a':
            n -= 10
    answer = n
    return answer

*다른 코드

def solution(n, control):
    key = dict(zip(['w','s','d','a'], [1,-1,10,-10]))
    return n + sum([key[c] for c in control])

 

JS

function solution(n, control) {
    for(let i=0; i<control.length; i++) {
        switch(control[i]) {
            case 'w': n += 1; break;
            case 's': n -= 1; break;
            case 'd': n += 10; break;
            case 'a': n -= 10; break;
        }
    }
    return n;
}

'프로그래머스 Lv.0' 카테고리의 다른 글

Lv.0 수열과 구간 쿼리 3  (0) 2025.01.29
Lv.0 수 조작하기 2  (0) 2025.01.28
Lv.0 마지막 두 원소  (0) 2025.01.26
Lv.0 이어 붙인 수  (0) 2025.01.26
Lv.0 주사위 게임 2  (0) 2025.01.25