<문제>
<접근 방식>
1) 'a'~'z'알파벳의 앞 위치를 담아둘 checkBox[26] 배열을 사용한다.
ex: ( 'a'의 위치는 'a' - 'a' = 0, checkBox[0], 'b'의 위치는 checkBOx[1]가 된다. )
2) 각 알파벳이 나왔을 때 해당 알파벳이 나온 인덱스 위치를 기록한다.
3) 동일한 알파벳이 나왔을 때 해당 알파벳의 checkBox위치에서 값을 꺼내 '현재 인덱스 - 전 인덱스' 로 몇 칸 떨어져 있는지 구하고 현재 인덱스를 해당 알파벳의 checkBox위치에 넣어준다. 이후 반복..
<코드>
class Solution {
public int[] solution(String s) {
int[] answer = new int[s.length()];
short[] checkBox = new short[26];
for(int i = 0; i < 26; i++) {
checkBox[i] = -1;
}
short i = 0;
for(char word : s.toCharArray()) {
int pos = word - 'a';
if(checkBox[pos] == -1) {
answer[i] = -1;
}
else{
answer[i] = i - checkBox[pos];
}
checkBox[pos] = i;
++i;
}
return answer;
}
}
반응형
'코딩 테스트 > 알고리즘(Java)' 카테고리의 다른 글
[프로그래머스/Lv.1] 두 개 뽑아서 더하기 (0) | 2025.02.04 |
---|---|
[프로그래머스/Lv.2] 카펫 (0) | 2025.02.04 |
[프로그래머스/Lv.1] 시저 암호 (0) | 2025.01.23 |
[프로그래머스/Lv.1] 최소직사각형 (0) | 2025.01.23 |
[프로그래머스/Lv.2] 짝지어 제거하기 (1) | 2025.01.21 |