문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/155652

제한 사항

입출력 예

풀이
class Solution {
public String solution(String s, String skip, int index) {
String answer = "";
char[] c = s.toCharArray();
int[] skipArr = new int[26];
for (int i = 97; i < 123; i++) {
for (int j = 0; j < skip.length(); j++) {
if (skip.charAt(j) == i) {
skipArr[i - 97] = 0;
break;
}
else {
skipArr[i - 97] = 1;
}
}
}
for (int i = 0; i < c.length; i++) {
int charValue = c[i];
int sum = 0;
while (sum < index) {
charValue++;
if (charValue == 123) charValue = 97;
sum += skipArr[charValue - 97];
}
c[i] = (char)charValue;
}
answer = String.valueOf(c);
return answer;
}
}
후기
중간에 반례를 처리하느라 조금 시간이 걸렸다. charValue++와 그 다음줄을 while문 마지막에 작성했었는데 그것 때문에 계속 틀렸던거였다. skip과 비교하는 문자는 다음 문자부터 비교하는건데 해당 문자와 비교하려고 하니까 그랬던거 같다. 그리고 문제를 풀고 다른 사람들의 풀이를 봤는데 생각지도 못한 좋은 풀이들이 많았다. StringBuilder를 이용해서 푼 풀이가 가장 좋은 것 같아 보였는데 이런 것이 있다는 것을 처음 알았다. 역시 아직 많이 부족하다는 걸 깨달았다... 또한 문자나 문자열을 다루는데 더 숙련이 필요하다는 느낌이 들었다. 공부해서 나중에 다른 방식으로 풀어봐야 겠다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로스래머스][JAVA][Lv. 1] 대충 만든 자판 (0) | 2023.06.29 |
|---|---|
| [프로그래머스][JAVA][Lv. 1] 개인정보 수집 유효기간 (0) | 2023.06.28 |
| [프로그래머스][JAVA][Lv. 1] 덧칠하기 (0) | 2023.05.22 |
| [프로그래머스][JAVA][Lv. 1] 바탕화면 정리 (0) | 2023.05.16 |
| [프로그래머스][JAVA][Lv. 1] 공원 산책 (0) | 2023.05.15 |