https://school.programmers.co.kr/learn/courses/30/lessons/142086
for 문을 돌려서 문자가 같은지 비교하며 같을 때 둘의 인덱스의 차를 리스트에 넣어야겠다고 생각했습니다.
그런데 문제의 요구사항을 충족하기 위해서는 역순으로 접근해야 했습니다.
요구사항에 따르면 앞에 같은 문자가 있을 때 뒤의 문자가 영향을 받기 때문입니다
역순으로 생각한다면 뒤에 같은 문자가 있을 때 앞에 문자가 영향을 받게 됩니다.
즉 자주 쓰는 방식으로 for(int i = 0; i < ; i++) 문을 작성하기 위해 역순으로 접근한 것입니다.
정답 :
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Solution {
public List<Integer> solution(String s) {
List<Integer> answer = new ArrayList<>();
List<Character> characters = new ArrayList<>();
for (int i = 0; i < s.length(); i++) {
characters.add(s.charAt(i));
}
Collections.reverse(characters);
for (int i = 0; i < characters.size(); i++) {
boolean found = false;
for (int j = i+1; j < characters.size(); j++) {
if (characters.get(i).equals(characters.get(j))) {
answer.add(j-i);
found = true;
break;
}
}
if(!found) {
answer.add(-1);
}
}
Collections.reverse(answer);
return answer;
}
}
'문제 풀이 > 프로그래머스 알고리즘' 카테고리의 다른 글
체육복 + ConcurrentModificationException (0) | 2024.11.04 |
---|---|
특정 날짜(xxxx, xx, xx)의 요일 구하기 - LocalDate (0) | 2024.10.24 |
문자열 내 마음대로 정렬하기 // Arrays.sort(), Comparator<T> (1) | 2024.10.14 |
이상한 문자 만들기 // String.split(), Character.toUpperCase() (1) | 2024.10.10 |
최대공약수와 최소공배수 // 스트림 연습 (0) | 2024.10.08 |