Develop

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

개인 공부/프로그래머스

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

개발 기록 2024. 1. 25. 11:30

문제

 

 

내풀이

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

            } // switch-case문

        } // 향상된 for문

        return n;
    }
}

 

 

다른 풀이1

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;
                default:break;
            }
        }

        return answer;
    }
}

 

느낀점

문제를 푸는 로직은 같으나

나는 enter를 많이 쳐서 줄 수가 긴 반면에 이분은 한줄로 적었다

이게 훨씬 깔끔하고 읽기 쉬운 방법인것같다

 

 

다른 풀이2

class Solution {
    public int solution(int n, String control) {
        return control.chars().reduce(n, (acc, c) -> acc + (c == 'w' ? 1 : c == 's' ? -1 : c == 'd' ? 10 : -10));
    }
}

 

느낀점

stream과 람다식을 이용해서 푼 코드

따로 공부를 하긴 했지만 막상 코드를 작성하려면 시간이 많이 걸리는 형태의 코드,,

여러개의 조건이 있을 시 3항을 쓰면 복잡해보이는데 문제가 간단해서 그런지

엄청 복잡해보이진 않는다.