알고리즘/프로그래머스
(LEVEL 1)프로그래머스 - 가장 가까운 같은 글자(JAVA)
꾸준함
2023. 1. 12. 19:26
문제
입출력 예
풀이.
1. 알파벳 갯수 만큼 alpha 배열 선언 (알파벳이 나온적이 있는지 체크하기 위해)
2. 글자의 위치를 저장하기 위한 idx배열 선언
3. s의 길이만큼 반복문을 돌며 한글자씩 비교
- 나온적이 있는지 먼저 체크(alpha배열의 값 확인 [0] -> a, [1] -> b ... )
- 나온적이 없다면(값이 0이라면) answer에 -1 추가하고 해당 alpha배열에 값을 0이 아닌 다른값으로 변환후 해당 글자의 위치를 idx배열에 저장
- 나온적이 있다면 해당 인덱스에서 최근글자의 인덱스를 빼서 저장하고 해당 글자 위치 최신화
코드
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;
}
}