문제 설명
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
나의 풀이
/*
start : 13:30
end : 13:55
*/
import java.util.Map;
import java.util.HashMap;
class Solution {
public int[] solution(String s) {
int[] answer = new int[s.length()];
Map<Character, Integer> map = new HashMap<>(); // 문자, 최신인덱스 정보
for(int i = 0; i < s.length(); i++){
char ch = s.charAt(i); // 문자
if(map.containsKey(ch)){ // 해시맵에 존재하면
int tmp = map.get(ch); // 해시맵의 key가 갖고있는 밸류와 현재 i와 빼서 answer배열에 담는다.
answer[i] = i - tmp;
map.put(ch, i);
}else { // 해시맵에 존재하지않으면
map.put(ch, i); // 해시맵에 저장한다.
answer[i] = -1;
}
}
return answer;
}
}
다른 풀이
import java.util.*;
class Solution {
public int[] solution(String s) {
int[] answer = new int[s.length()];
HashMap<Character,Integer> map = new HashMap<>();
for(int i=0; i<s.length();i++){
char ch = s.charAt(i);
answer[i] = i-map.getOrDefault(ch,i+1);
map.put(ch,i);
}
return answer;
}
}
다른 풀이2
import java.util.stream.IntStream;
class Solution {
public int[] solution(String s) {
return IntStream.range(0, s.length()).map(i -> s.substring(0, i).lastIndexOf(s.charAt(i)) > -1 ? i - s.substring(0, i).lastIndexOf(s.charAt(i)) : -1).toArray();
}
}
'👨💻 Coding Test > Programers' 카테고리의 다른 글
[Programmers/Java/Lv.1/문자열] 69.개인정보 수집 유효기간 (0) | 2025.07.04 |
---|---|
[Programmers/Java/Lv.1/문자열] 68.크기가 작은 부분 문자열 (0) | 2025.07.03 |
[Programmers/Java/Lv.1/priorityQueue] 65.명예의 전당 (1) (0) | 2025.07.02 |
[Programmers/Java/Lv.1/수학] 64.기사단원의 무기 (0) | 2025.07.02 |
[Programmers/Java/Lv.1/HashMap] 63.과일 장수 (1) | 2025.06.30 |