코린이의 소소한 공부노트

[프로그래머스/Lv.1] 가장 가까운 같은 글자 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.1] 가장 가까운 같은 글자

무지맘 2023. 2. 14. 20:43

1. Input

1) String s

 

2. Output

1) s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 담은 배열

 

3. Constraint

1) 1 s의 길이 10,000

2) s은 영어 소문자로만 이루어져 있다.

 

4. Example

Input: s="banana" -> Output: [-1, -1, -1, 2, 2, 2]

설명:

- b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없다. -> -1

- a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없다. -> -1

- n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없다. -> -1

- a는 자신보다 두 칸 앞에 a가 있다. -> 2

- n도 자신보다 두 칸 앞에 n이 있다. -> 2

- a는 자신보다 두 칸, 네 칸 앞에 a가 있다. 이 중 가까운 것은 두 칸 앞이다. -> 2

 

5. Code

1) 첫 코드(2023/02/14)

int[] answer = new int[s.length()];
HashMap<Character,Integer> m = new HashMap<Character,Integer>();
for(int i=0 ; i<s.length() ; i++){
    if(m.containsKey(s.charAt(i)))
        answer[i] = i-m.get(s.charAt(i));
    else
        answer[i] = -1;
    m.put(s.charAt(i), i);
}
return answer;

- 다른 사람들의 코드를 살펴보니, lastIndexOf()getOrDefault()를 쓰는 것을 볼 수 있었다. 아직 공부를 더 많이많이 해야 한다.