본문 바로가기
코딩 테스트/알고리즘(Java)

[프로그래머스/Lv.1] 가장 가까운 같은 글자

by KeepCoding 2025. 1. 24.

<문제>

 

 

<접근 방식>

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;
    }
}
반응형