티스토리 뷰

문제출처

https://school.programmers.co.kr/learn/courses/30/lessons/181925

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제

정수 배열 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 result
[ 0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1 ] "wsdawsdassw"

 

풀이

주어진 배열의 첫번 째 인덱스의 원소는 무조건 0이다.
이러한 점을 이용하여 for문을 1부터 시작한다.
만약 numLog[i]-numLog[i-1]의 값이 1이면 w를 누른 것이다.
만약 numLog[i]-numLog[i-1]의 값이 -1이면 s를 누른 것이다.
만약 numLog[i]-numLog[i-1]의 값이 10이면 d를 누른 것이다.
만약 numLog[i]-numLog[i-1]의 값이 -10이면 a를 누른 것이다.

 

소스코드

class Solution {
    public String solution(int[] numLog) {
        String answer = "";
        
        for(int i=1; i<numLog.length; i++){
            if(numLog[i]-numLog[i-1]==1){
                answer+='w';
            }else if(numLog[i]-numLog[i-1]==-1){
                answer+='s';
            }else if(numLog[i]-numLog[i-1]==10){
                answer+='d';
            }else{
                answer+='a';
            }
        }       
        return answer;
    }
}