문제 링크
[level 1] 가장 가까운 같은 글자 - 142086
Note
add(), put() 같이 쓰니가 바꿔 쓰고 그랬다...
처음에 설정된 반환 타입(int배열)을 List로 바꿔서 List를 배열로 바꾸는 것을 생략했다.
Key
- HashMap
- map.containsKey()
- 주어진 key가 map에 포함되어 있는지 확인
- .toCharArray()
- 문자열을 Char 타입 배열로 변환
제출한 코드
import java.util.*;
class Solution {
public List<Integer> solution(String s) {
List<Integer> answer = new ArrayList<>();
// s를 한 글자씩 이전에 등장했는지 확인하고 map에 인덱스와 추가
// map에 존재하는 글자라면 더 큰 인덱스를 현재 인덱스에서 빼고 리스트에 추가
char[] sArray = s.toCharArray();
Map<Character, Integer> map = new HashMap<>();
for(int i = 0; i < sArray.length; i++){
char c = sArray[i];
if(!map.containsKey(c)){
answer.add(-1);
} else {
answer.add(i - map.get(c));
}
map.put(c, i);
}
return answer;
}
}
반응형
'코딩테스트 > Java' 카테고리의 다른 글
프로그래머스/자바 lv1 완주하지 못한 선수 - HashMap, getOrDefault(), keySet(), for-each (0) | 2024.03.31 |
---|---|
프로그래머스/자바 A로 B 만들기 - HashMap (0) | 2024.03.29 |
소프티어/자바 lv.2 연탄의 크기 - HashMap (0) | 2024.03.29 |