본문 바로가기
코테 준비(with 프로그래머스)

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

by jeong11 2023. 11. 10.
반응형
문제 설명

정수 배열 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"
"수 조작하기 1" 문제의 control을 구하는 문제라고 이해할 수 있습니다.

 

문제를 이해하는데 더 오랜 시간이 걸렸다 

배열문제에 더 약해서 '배열'이라는 단어가 나오면 머리가 아득해지는게 있다 

이번 문제도 처음에 수 조작하기처럼 풀면 되는 줄 알고 일단 코드를 짰다가 문제를 다시 읽어보니 그게 아니어서 

다 지우고 다시 풀었다 

 

 

 

*내가 해결한 코드

배열의 마지막 항목 : numLog[i] 

그 전 항목 : numLog[i-1]으로 작성해서 수에 1이 더해지는 경우/수에 1을 빼는 경우/수에 10을 더하는 경우/수에 10을 빼는 경우로 

해당 단어를 찾아내는 방식으로 만들어주었다  

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 if((numLog[i] - numLog[i-1]) == -10){ 
                    answer += "a";
                }                                              
        }
		return answer;
	}
}

 

반응형