문제: https://school.programmers.co.kr/learn/courses/30/lessons/142086
1. 코드
class Solution {
public int[] solution(String s) {
int[] answer = new int[s.length()];
StringBuilder sb = new StringBuilder("");
for(int i = 0; i < s.length(); i++) {
if(sb.lastIndexOf(String.valueOf(s.charAt(i))) == -1)
answer[i] = -1;
else
answer[i] = i - sb.lastIndexOf(String.valueOf(s.charAt(i)));
sb.append(String.valueOf(s.charAt(i)));
}
return answer;
}
}
2. 설명
int[] answer = new int[s.length()];
StringBuilder sb = new StringBuilder("");
for(int i = 0; i < s.length(); i++) {
if(sb.lastIndexOf(String.valueOf(s.charAt(i))) == -1)
answer[i] = -1;
else
answer[i] = i - sb.lastIndexOf(String.valueOf(s.charAt(i)));
sb.append(String.valueOf(s.charAt(i)));
}
answer의 길이는 문자열 길이 수와 동일하며 문자열에 대한 모든 문자에 접근하는데 lastIndexOf() 메서드를 사용하여 임의의 문자열(sb)에 존재하지 않다면 -1을 answer에 저장하며 만약 존재한다면 answer에 (현재 index - 찾은 index)을 저장합니다. 그리고 현재 문자를 임의의 문자열(sb)에 저장합니다.
3. 정리
- lastIndexOf() 메서드를 사용하여 가장 가까운 같은 글자의 index 값을 찾는다.
- answer[현재 index] = 현재 index - 가장 가까운 같은 글자의 index
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges
'컴퓨터 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 176963번: 추억 점수 [Java] (0) | 2023.07.22 |
---|---|
프로그래머스 - 132267번: 콜라 문제 [Java] (0) | 2023.07.21 |
프로그래머스 - 134240번: 푸드 파이트 대회 [Java] (0) | 2023.07.19 |
프로그래머스 - 68644번: 두 개 뽑아서 더하기 [Java] (0) | 2023.07.18 |
프로그래머스 - 12915번: 문자열 내 마음대로 정렬하기 [Java] (0) | 2023.07.17 |