
내가 생각했을때 문제에서 원하는부분
정수 배열 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"
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.