🔍문제
📊분석
- String s를 for문을 이용하여 각각의 character를 받는다.
- 이중 for문을 이용해 알파벳 배열상 index 만큼 후에 위치한 character를 answer의 순서대로 저장해 준다.
- 주의: 알파벳 배열상 26인 z보다 범위가 초가 할 시에는 a부터 다시 시작되니 알파벳정열상 index를 -26을 해주면 된다.
- 만약 추가되는 index 범위 안에 skip에 포함된 character 가있을 시 skip에 포함된 개수에 character만큼 index에서 빼준다.
✏️풀이
class Solution {
public String solution(String s, String skip, int index) {
String answer = "";
for(int i =0; i<s.length();i++){
char c = s.charAt(i);
for(int j = 0; j < index; j++){
//String s에 위치한 i번쨰 알파벳을 index만큼 증가하여 새롭게 정의
c += 1;
//증가된 알파벳이 z의 인덱스 범위를 초가할시 a부터 다시시작
if (c > 'z'){
c-=26;
}
//String skip에 해당 알파벳이있다면 위의 j포문을 다시돌아 알파벳의 index를 다시증가.
if(skip.contains(String.valueOf(c))){
j--;
}
}
//정답출력을위해 나온 c들을 String answer의 삽입
answer += c;
}
return answer;
}
}
문제를 풀기 전에는 char값에 숫자를 이용해 인덱스를 움직일 수 있는 줄 알지 못해서 처음에는 알파벳 천체를 포함한 Array를 이용하여 문제를 풀이하려고 했다. 앞으로 더 많은 로직들을 배우면 훨씬 더 가독성이 좋고 복잡하지 않은 효율적인 코드를 완성할 수 있을 거 같다.
'알고리즘 문제 연습' 카테고리의 다른 글
[프로그래머스] 기사단원의 무기 (0) | 2024.08.27 |
---|---|
[프로그래머스,Java]2016년 (0) | 2024.08.26 |
[프로그래머스, Java] 푸드 파이트 대회 (0) | 2024.08.06 |
[프로그래머스, Java] 최소직사각형 (0) | 2024.07.30 |
[프로그래머스,Java] 최대공약수와 최대공배수(유클리드 호제법) (0) | 2024.07.29 |