코린이의 소소한 공부노트

[프로그래머스/Lv.0] 수 조작하기 2 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.0] 수 조작하기 2

무지맘 2023. 5. 1. 13:33

1. Input, Output, Example

numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 해보자.

// "w" : 수에 1을 더한다.

// "s" : 수에 1을 뺀다.

// "d" : 수에 10을 더한다.

// "a" : 수에 10을 뺀다.

그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog이다.

- 주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 반환

 

2. Constraint

1) 2 log의 길이 100,000

2) -100,000 log[0] 100,000

3) 1 i log의 길이인 모든 i에 대해 |log[i] - log[i - 1]|의 값은 1 또는 10이다.

4) numLog[i]numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있다.

 

3. Code

1) 첫 코드(2023/05/01)

class Solution {
    public String solution(int[] numLog) {
        String answer = "";
        for(int i=1 ; i<numLog.length ; i++){
            switch(numLog[i]-numLog[i-1]){
                case 1: answer += "w"; break;
                case -1: answer += "s"; break;
                case 10: answer += "d"; break;
                default: answer += "a";
            }
        }
        return answer;
    }
}

2) 너무 느려서 다시 짜본 코드(2023/05/01)

class Solution {
    public String solution(int[] numLog) {
        StringBuffer sb = new StringBuffer(numLog.length-1);
        for(int i=1 ; i<numLog.length ; i++){
            switch(numLog[i]-numLog[i-1]){
                case 1: sb.append("w"); break;
                case -1: sb.append("s"); break;
                case 10: sb.append("d"); break;
                default: sb.append("a");
            }
        }
        return sb.toString();
    }
}

- 엄청난 차이를 보인다... 점수 변화는 없다.