1. 다른 분의 풀이를 참고한 풀이
쉽게 char을 하나씩 증가시키면서 비교하면 되는데 일단 index만큼 증가시켜놓고 skip된게 있으면 그제서야 하나씩 더 올리려고 했던 나,,, 괜히 쉽게 가려다가 더 어렵게 가는 경우가 많은 것 같다. 이런건 어떻게 해야하나!
그리고 간과했던 것 string.contains! 함수들을 진짜 한번은 정리하는 시간이 필요한 것 같기도 하당.
class Solution {
public String solution(String s, String skip, int index) {
String answer = "";
char[] chars = s.toCharArray();
StringBuilder sb = new StringBuilder();
for(int i = 0; i<s.length() ; i++){
char ch = chars[i];
int plus = 0;
while(plus < index) {
ch = (char)((ch - 'a' + 1)%26 + 'a');
if(!skip.contains(String.valueOf(ch)))
plus++;
}
sb.append(ch);
}
return sb.toString();
}
}
2. 다른 분 풀이
어렵게 수학적으로 접근하기 보다는 심플하게 문자가 증가하다가 z가 되면 a로 증가하는 로직으로 구성되어있는데, 가독성이 훨씬 좋아지는 것 같다. 내가 푼 풀이는 ASCII코드에 대한 이해가 없으면 이해하기 어렵다.
class Solution {
public String solution(String s, String skip, int index) {
StringBuilder answer = new StringBuilder();
for (char letter : s.toCharArray()) {
char temp = letter;
int idx = 0;
while (idx < index) {
temp = temp == 'z' ? 'a' : (char) (temp + 1);
if (!skip.contains(String.valueOf(temp))) {
idx += 1;
}
}
answer.append(temp);
}
return answer.toString();
}
}
'코딩테스트 > Programmers' 카테고리의 다른 글
[프로그래머스] 완주하지 못한 선수 (0) | 2025.03.13 |
---|---|
[프로그래머스] 로또의 최고 순위와 최저 순위 (1) | 2025.03.05 |
[프로그래머스] 다트 게임 (0) | 2025.03.05 |
[프로그래머스] 옹알이(2) (0) | 2025.03.05 |
[프로그래머스] 실패율 (0) | 2025.03.05 |