프로그래머스 문제 풀이

Lv0 - 수 조작하기 2

Dotae1 2025. 2. 22. 18:59

class Solution {
    public String solution(int[] numLog) {
        int c = numLog.length;
        StringBuilder answer = new StringBuilder();

        for (int i = 1; i < c; i++) {  // `i <= c` → `i < c`로 수정
            int diff = numLog[i] - numLog[i - 1];

            switch (diff) {
                case 1: answer.append("w"); break;
                case -1: answer.append("s"); break;
                case 10: answer.append("d"); break;
                case -10: answer.append("a"); break;
            }
        }
        return answer.toString();
    }
}

 

이 문제는 전에. 풀었던 수 조작하기 1과 반대의 알고리즘을 활용하여 푸는 문제이다.

만약 switch - case 문을 활용하여 1, -1, 10, -10일때로 코드 작성한다음 마지막에 answer에 return 해주면된다.

 

만약 이게 아닌 for-if문만 활용해서 풀 수 있는데 밑에 코드를 참고하길 바란다.

class Solution {
    public String solution(int[] numLog) {
        int c = numLog.length;
        StringBuilder answer = new StringBuilder(); // String 대신 StringBuilder 사용 (성능 최적화)

        for (int i = 1; i < c; i++) { // i <= c가 아니라 i < c
            int diff = numLog[i] - numLog[i - 1];

            if (diff == 1) {
                answer.append("w");
            } else if (diff == -1) {
                answer.append("s");
            } else if (diff == 10) {
                answer.append("d");
            } else if (diff == -10) {
                answer.append("a");
            }
        }

        return answer.toString(); // StringBuilder를 문자열로 변환
    }
}

'프로그래머스 문제 풀이' 카테고리의 다른 글

Lv0 - 콜라츠 수열 만들기  (0) 2025.02.22
Lv0 - 카운트 업  (0) 2025.02.22
Lv0 - 수 조작하기1  (0) 2025.02.22
Lv0 - 마지막 두 원소  (0) 2025.02.22
Lv0 - 이어 붙인 수  (0) 2025.02.22