코딩항해기

[프로그래머스][JAVA] 수 조작하기 본문

problem solving/코딩 테스트

[프로그래머스][JAVA] 수 조작하기

miniBcake 2024. 6. 25. 17:44

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

 

1차 풀이

class Solution {
    public int solution(int n, String control) {
        int answer = n;
        
        for(int i = 0; i < control.length(); i++){
            String a = ""+control.charAt(i);
            
            if(a.equals("w")){
                answer += 1;
            }
            else if(a.equals("s")){
                answer -= 1;
            }
            else if(a.equals("d")){
                answer += 10;
            }
            else if(a.equals("a")){
                answer -= 10;
            }
        }
        
        return answer;
    }
}

 

2차풀이 (.toCharArray()이용하기)

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

 

느낀 점

전의 문제를 풀 때 얻은 교훈을 잊지말자!

다른 사람 답안을 보면 람다식과 삼항연산자를 활용해서 한줄로 코딩한 분도 있었는데,

람다식을 활용하면 코드가 굉장히 간략해진다는 것을 알 수 있었다.