프로그래머스 수 조작하기 2

KIMYEONGJUN·2026년 5월 15일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

정수 배열 numLog가 주어집니다.
처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다.
"w" : 수에 1을 더한다.
"s" : 수에 1을 뺀다.
"d" : 수에 10을 더한다.
"a" : 수에 10을 뺀다.
그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다.
즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다.
주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.

내가 이 문제를 보고 생각해본 부분

주어진 코드는 numLog 배열에서 인접한 두 값의 차이에 따라 문자 "w", "s", "d", "a"를 찾아 문자열로 변환하는 문제를 해결한다.
초기 수 numLog[0]에서 시작해 각 조작 단계별 차이를 확인하고, 그에 맞는 조작 문자를 결과로 만든다.
주어진 코드는 다음과 같은 방식으로 동작한다.
for 반복문은 배열의 두 번째 요소부터 시작해 각 요소와 바로 전 요소의 차이를 구한다.
차이가 1이면 "w", -1이면 "s", 10이면 "d", -10이면 "a"를 결과에 추가한다.
모든 차이 값을 검사한 후 완성된 문자열을 반환한다.
main 메서드에서는 예시 배열을 넣어 함수를 호출하고 결과를 출력한다.

코드로 구현

class Solution {
    public String solution(int[] numLog) {
        StringBuilder answer = new StringBuilder();
        for(int i = 1; i < numLog.length; i++) {
            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();
    }
}

프로그래머스 코드

package programmers;

// 프로그래머스 수 조작하기 2
public class Main20 {
    public static String solution(int[] numLog) {
        StringBuilder answer = new StringBuilder();
        for (int i = 1; i < numLog.length; i++) {
            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();
    }

    public static void main(String[] args) {
        // 테스트용 예시
        int[] numLog = {0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1};
        String result = solution(numLog);
        System.out.println(result);  // 예상 출력: "wsdawsdassw"
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글