프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 수 조작하기 1(Java)

Sigfriede 2023. 5. 5. 01:30

  문제 설명

  정수 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
class Solution {
    public int solution(int n, String control) {
        int answer = 0;
        for (String s: control.split("")) {
            if (s.equals("w")) {
                n += 1;
            } else if (s.equals("s")) {
                n -= 1;
            } else if (s.equals("d")) {
                n += 10;
            } else {
                n -= 10;
            }
        }
        answer = n;
        return answer;
    }
}

  for-each문에서 control을 split 메소드로 문자열을 한 글자씩 분리합니다. 구분자가 필요하지 않으므로 생략했습니다. 이를 문자열 s에 할당한 값을 순회합니다.

  조건이 간결하고 반복적이므로 switch문의 사용도 고려해볼만 합니다. 그러나 저는 if문이 익숙하여 if문으로 작성했습니다. 조건과 답은 문제에서 요구하는 그대로, 직관적으로 작성했습니다.

  만약 문자열 s의 문자가 "w"와 동일하다면 n에 1을 더합니다. 만약 "s"와 같다면 n에 1을 뺍니다. 만약 "d"와 같다면 10을 더합니다. 앞선 조건을 모두 만족하지 않는다면 10을 뺍니다. 이 과정에서 n은 값이 계속 갱신되고, 최종값은 answer에 할당됩니다.