728x90
코드 힌트
문자를 순회하며 변형하기:
- 주어진 문자열 s의 각 문자를 한 번씩 순회하면서 변형합니다.
다음 문자로 이동하기:
- 각 문자를 지정된 횟수만큼 다음 문자로 이동합니다.
- 예를 들어, 'a'에서 시작하여 1번 이동하면 'b'가 됩니다. 2번 이동하면 'c'가 됩니다.
문자 순환 처리:
- 알파벳은 'z'에서 'a'로 순환합니다. 만약 'z'에서 다음 문자로 이동해야 한다면, 다시 'a'로 돌아가야 합니다.
- 배열로 알파벳의 index를 구하여 넘었는지 확인할 수도 있고, char 타입으로 바꾸어서 확인하셔도 됩니다.
건너뛸 문자 처리:
- 주어진 문자열 skip에 포함된 문자는 건너뛰고, 다음 문자로 이동합니다.
- 문자열에 포함이 됐는지는 contains() 메소드를 활용합니다.
조건 확인 및 이동:
- 다음 문자로 이동할 때마다 건너뛸 문자인지 확인하고, 건너뛸 문자가 아니면 이동 횟수를 하나씩 줄여갑니다.
- 이동 횟수가 0이 되면 해당 문자를 최종 변형 문자로 선택합니다.
정답은 더보기 클릭
더보기
import java.util.*;
class Solution {
public String solution(String s, String skip, int index) {
StringBuilder sb = new StringBuilder();
// 문자열 s의 각 문자를 순회하며 변형
for (char c : s.toCharArray()) {
sb.append(shiftCharacter(c, index, skip));
}
return sb.toString();
}
static char shiftCharacter(char c, int index, String skip) {
int count = 0;
// 지정된 횟수만큼 문자를 변형
while (count < index) {
c++;
// 'z'를 넘어가면 다시 'a'로 순환
if (c > 'z') {
c = 'a';
}
// 현재 문자가 건너뛸 문자에 포함되지 않는 경우만 count 증가
if (!skip.contains(String.valueOf(c))) {
count++;
}
}
return c;
}
}
728x90
'프로그래머스(Java) > Level 1' 카테고리의 다른 글
[프로그래머스] 문자열 나누기 (0) | 2024.08.16 |
---|---|
[프로그래머스] 신고 결과 받기 (0) | 2024.08.12 |
[프로그래머스] [PCCE 기출문제] 9번 / 이웃한 칸 (0) | 2024.08.06 |
[프로그래머스] 크레인 인형뽑기 게임 (0) | 2024.08.05 |
[프로그래머스] 키패드 누르기 (0) | 2024.08.05 |