💡풀이
// 1. 문자열 s를 배열로 쪼개서 순회한다
// 2-1. 앞선 문자가 존재하지 않을경우 -1을 배열에 저장하고 다음으로 넘어간다.
// 2-2. 현재 문자로부터 앞으로 순회하며 같은 문자를 찾는다.
// 2-3. 동일한 문자를 찾게되면 count를 멈추고 배열에 추가한다.
class Solution {
public int[] solution(String s) {
char[] chars = s.toCharArray();
int[] answer = new int[s.length()];
for (int i = 0; i < chars.length; i++) {
if (s.indexOf(chars[i]) == i) {
answer[i] = -1;
continue;
}
int count = 1;
for (int j = i - 1; j >= 0; j--) {
if (chars[i] == chars[j]) {
answer[i] = count;
break;
}
count++;
}
}
return answer;
}
}
💡풀이 2
- substring으로 문자열을 잘라가면서 해결
// 1. 찾고자하는 문자 target을 구한다
// 2. i 번째 문자 바로 앞까지 s 문자열을 자른다
// 3. 자른 문자열에서 target과 동일하고 가장 마지막에 존재하는 문자의 index를 구한다
// 4. 동일한 문자가 존재하지않는다면(-1) -1을 저장하고 존재한다면 index 값의 차이를 저장한다.
class Solution {
public int[] solution(String s) {
int[] answer = new int[s.length()];
for (int i = 0; i < s.length(); i++) {
char target = s.charAt(i);
int index = s.substring(0, i)
.lastIndexOf(target);
answer[i] = index != -1 ? i - index : -1;
}
return answer;
}
}
📖새로 배운 부분
문자열을 index 단위로 분리해서 탐색해야하는 경우에는
substring을 활용하여 해결하도록 고민해보자
GitHub - okjunghyeon/Programmers_CodingTest: 프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다.
프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다. Contribute to okjunghyeon/Programmers_CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Programmers' 카테고리의 다른 글
[프로그래머스, Java] 두 개 뽑아서 더하기 (0) | 2025.07.15 |
---|---|
[프로그래머스, Java] 시저 암호 (0) | 2025.07.15 |
[프로그래머스, Java] 최소직사각형 (0) | 2025.07.13 |
[프로그래머스, Java] 이상한 문자 만들기 (1) | 2025.07.13 |
[프로그래머스, Java] 삼총사 (0) | 2025.07.12 |