728x90
https://school.programmers.co.kr/learn/courses/30/lessons/142086
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
728x90
메모리: 84.5 MB, 시간: 1.01 ms
사용 알고리즘: 구현
import java.util.*;
class Solution {
public int[] solution(String s) {
// 각 문자가 마지막에 등장한 인덱스 정보를 저장할 배열
int[] index = new int['z' - 'a' + 1];
Arrays.fill(index, -1);
int[] answer = new int[s.length()];
char c;
for(int i = 0; i < s.length(); i++) {
// i번째 문자
c = s.charAt(i);
// 해당 문자가 처음 나온 경우
if(index[c - 'a'] == -1) answer[i] = -1;
// 이전에 나온 문자라면
// 마지막으로 나왔던 자리가 몇 칸 떨어져 있었는지 계산
else answer[i] = i - index[c - 'a'];
// 현재 문자가 마지막으로 등장한 위치 저장
index[c - 'a'] = i;
}
return answer;
}
}
728x90
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스, 12915] 문자열 내 마음대로 정렬하기 (java) (0) | 2025.01.21 |
---|---|
[프로그래머스, 12969] 직사각형 별찍기 (java) (0) | 2025.01.21 |
[프로그래머스, 12910] 나누어 떨어지는 숫자 배열 (java) (0) | 2025.01.21 |
[프로그래머스, 12940] 최대공약수와 최소공배수 (java) (0) | 2025.01.21 |
[프로그래머스, 76501] 음양 더하기 (java) (0) | 2025.01.20 |