본문 바로가기
알고리즘/프로그래머스

(LEVEL 1)프로그래머스 - 가장 가까운 같은 글자(JAVA)

by 꾸준함 2023. 1. 12.

문제


입출력 예


풀이.

 

1. 알파벳 갯수 만큼 alpha 배열 선언 (알파벳이 나온적이 있는지 체크하기 위해)

2. 글자의 위치를 저장하기 위한 idx배열 선언

3. s의 길이만큼 반복문을 돌며 한글자씩 비교 

  1.  나온적이 있는지 먼저 체크(alpha배열의 값 확인 [0] -> a, [1] -> b ... )
  2.  나온적이 없다면(값이 0이라면) answer에 -1 추가하고 해당 alpha배열에 값을 0이 아닌 다른값으로 변환후 해당 글자의 위치를 idx배열에 저장
  3.  나온적이 있다면 해당 인덱스에서 최근글자의 인덱스를 빼서 저장하고 해당 글자 위치 최신화 

코드

class Solution {
    public int[] solution(String s) {
        int [] alpha = new int[26];
        int [] idx = new int[26];
        int [] answer = new int[s.length()];
        
        for(int i=0;i<s.length();i++){
            if( alpha[s.charAt(i)-'a'] == 0){
                answer[i] = -1;
                alpha[s.charAt(i)-'a']++;
                idx[s.charAt(i)-'a']=i;
            }else{
                answer[i] = i-idx[s.charAt(i)-'a'];
                idx[s.charAt(i)-'a']=i;
            }
        }
        
        
        return answer;
    }
}