문제
https://school.programmers.co.kr/learn/courses/30/lessons/142086
나의 풀이
import java.util.HashMap;
class Solution {
public int[] solution(String s) {
int sLen = s.length();
int[] answer = new int[sLen];
HashMap<Character, Integer> map = new HashMap<>();
for (int i = 0; i < sLen; i++) {
char c = s.charAt(i);
if (map.containsKey(c)) {
int idx = map.get(c);
answer[i] = i - idx;
} else {
answer[i] = -1;
}
map.put(c, i);
}
return answer;
}
}
글자가 몇 번째에 있는지 인덱스를 기억하는 HashMap 객체를 만들고 입력한 글자 s를 순회한다. 이 때 s의 길이 n을 반복하기 때문에 증가 차수는 선형이다.
containskey를 사용하여 map에 글자가 있으면 거리를 반환하고 없으면 -1을 반환한다. 이 때 continaskey의 증가 차수는 상수이다.
따라서 이 풀이는 선형이다.
'알고리즘 & 문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 성격 유형 검사하기(java) (0) | 2023.02.02 |
---|---|
[프로그래머스] 햄버거 만들기(java) (0) | 2023.02.02 |
[프로그래머스] 문자열 나누기(java) (0) | 2023.02.02 |
[프로그래머스] 크기가 작은 부분 문자열(java) (0) | 2023.01.29 |
[프로그래머스] 개인정보 수집 유효기간(java) (0) | 2023.01.29 |