
class Solution {
public String solution(int[] numLog) {
int c = numLog.length;
StringBuilder answer = new StringBuilder();
for (int i = 1; i < c; i++) { // `i <= c` → `i < c`로 수정
int diff = numLog[i] - numLog[i - 1];
switch (diff) {
case 1: answer.append("w"); break;
case -1: answer.append("s"); break;
case 10: answer.append("d"); break;
case -10: answer.append("a"); break;
}
}
return answer.toString();
}
}
이 문제는 전에. 풀었던 수 조작하기 1과 반대의 알고리즘을 활용하여 푸는 문제이다.
만약 switch - case 문을 활용하여 1, -1, 10, -10일때로 코드 작성한다음 마지막에 answer에 return 해주면된다.
만약 이게 아닌 for-if문만 활용해서 풀 수 있는데 밑에 코드를 참고하길 바란다.
class Solution {
public String solution(int[] numLog) {
int c = numLog.length;
StringBuilder answer = new StringBuilder(); // String 대신 StringBuilder 사용 (성능 최적화)
for (int i = 1; i < c; i++) { // i <= c가 아니라 i < c
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(); // StringBuilder를 문자열로 변환
}
}
'프로그래머스 문제 풀이' 카테고리의 다른 글
| Lv0 - 콜라츠 수열 만들기 (0) | 2025.02.22 |
|---|---|
| Lv0 - 카운트 업 (0) | 2025.02.22 |
| Lv0 - 수 조작하기1 (0) | 2025.02.22 |
| Lv0 - 마지막 두 원소 (0) | 2025.02.22 |
| Lv0 - 이어 붙인 수 (0) | 2025.02.22 |