๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/142086?language=java
๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ก์ ๋, s์ ๊ฐ ์์น๋ง๋ค ์์ ๋ณด๋ค ์์ ๋์์ผ๋ฉด์, ์์ ๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณณ์ ์๋ ๊ฐ์ ๊ธ์๊ฐ ์ด๋ ์๋์ง ์๊ณ ์ถ์ต๋๋ค.
์๋ฅผ ๋ค์ด, s="banana"๋ผ๊ณ ํ ๋, ๊ฐ ๊ธ์๋ค์ ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฝ์ด ๋๊ฐ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ด ์งํํ ์ ์์ต๋๋ค.
- b๋ ์ฒ์ ๋์๊ธฐ ๋๋ฌธ์ ์์ ์ ์์ ๊ฐ์ ๊ธ์๊ฐ ์์ต๋๋ค. ์ด๋ -1๋ก ํํํฉ๋๋ค.
- a๋ ์ฒ์ ๋์๊ธฐ ๋๋ฌธ์ ์์ ์ ์์ ๊ฐ์ ๊ธ์๊ฐ ์์ต๋๋ค. ์ด๋ -1๋ก ํํํฉ๋๋ค.
- n์ ์ฒ์ ๋์๊ธฐ ๋๋ฌธ์ ์์ ์ ์์ ๊ฐ์ ๊ธ์๊ฐ ์์ต๋๋ค. ์ด๋ -1๋ก ํํํฉ๋๋ค.
- a๋ ์์ ๋ณด๋ค ๋ ์นธ ์์ a๊ฐ ์์ต๋๋ค. ์ด๋ 2๋ก ํํํฉ๋๋ค.
- n๋ ์์ ๋ณด๋ค ๋ ์นธ ์์ n์ด ์์ต๋๋ค. ์ด๋ 2๋ก ํํํฉ๋๋ค.
- a๋ ์์ ๋ณด๋ค ๋ ์นธ, ๋ค ์นธ ์์ a๊ฐ ์์ต๋๋ค. ์ด ์ค ๊ฐ๊น์ด ๊ฒ์ ๋ ์นธ ์์ด๊ณ , ์ด๋ 2๋ก ํํํฉ๋๋ค.
๋ฐ๋ผ์ ์ต์ข
๊ฒฐ๊ณผ๋ฌผ์ [-1, -1, -1, 2, 2, 2]๊ฐ ๋ฉ๋๋ค.
๋ฌธ์์ด s์ด ์ฃผ์ด์ง ๋, ์์ ๊ฐ์ด ์ ์๋ ์ฐ์ฐ์ ์ํํ๋ ํจ์ solution์ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ s์ ๊ธธ์ด ≤ 10,000
- s๋ ์์ด ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
s | result |
"banana" | [-1, -1, -1, 2, 2, 2] |
"foobar" | [-1, -1, 1, -1, -1, -1] |
๋ด๊ฐ ์์ฑํ ์ฝ๋
import java.util.*;
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++) {
if (!map.containsKey(s.charAt(i))) {
answer[i] = -1;
map.put(s.charAt(i), i);
} else {
answer[i] = i - map.get(s.charAt(i));
map.put(s.charAt(i), i);
}
}
return answer;
}
}
์ฝ๋ ์ค๋ช
- int[ ] answer = new int[s.length( )] : ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๋ฐฐ์ด answer๋ฅผ ๊ธธ์ด๊ฐ s.length์ผ๋ก ์ด๊ธฐํํ๋ค.
- Map<Character, Integer> map = new HashMap<>( ) : ๊ฐ ๋ฌธ์์ ๋ง์ง๋ง ๋ฑ์ฅ ์์น๋ฅผ ์ ์ฅํ HashMap์ ์ด๊ธฐํํ๋ค.
- for (int i = 0; i < s.length( ); i++) { } : for๋ฌธ์ ์ฌ์ฉํด์ i๊ฐ 0๋ถํฐ s.length( )-1๊น์ง ๋ฐ๋ณตํ๋ค.
- if (!map.containKeys(s.charAt(i)) : if๋ฌธ์ ์ฌ์ฉํด์ ํ์ฌ ๋ฌธ์๊ฐ HashMap์ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ์คํํ๋ค.
- answer[i] = -1 : answer์ i๋ฒ์งธ ์์๋ฅผ -1๋ก ์ ์ฅํ๋ค.
- map.put(s.charAt(i), i) : HashMap์ key๊ฐ s.charAt(i), value๊ฐ i์ธ ๊ฐ์ ์ ์ฅํ๋ค.
- else { } : ํ์ฌ ๋ฌธ์๊ฐ HashMap์ ์กด์ฌํ ๊ฒฝ์ฐ ์คํํ๋ค.
- answer[i] = i - map.get(s.charAt(i) : answer์ i๋ฒ์งธ ๊ฐ์ผ๋ก i์์ HashMap์ ์ ์ฅ๋ ํ์ฌ ๋ฌธ์์ value๊ฐ์ ๋บ ๊ฐ์ ์ ์ฅํ๋ค.
- map.put(s.charAt(i), i) : HashMap์ key๊ฐ s.charAt(i), value๊ฐ i์ธ ๊ฐ์ ์ ์ฅํ๋ค.
- answer[i] = i - map.get(s.charAt(i) : answer์ i๋ฒ์งธ ๊ฐ์ผ๋ก i์์ HashMap์ ์ ์ฅ๋ ํ์ฌ ๋ฌธ์์ value๊ฐ์ ๋บ ๊ฐ์ ์ ์ฅํ๋ค.
- if (!map.containKeys(s.charAt(i)) : if๋ฌธ์ ์ฌ์ฉํด์ ํ์ฌ ๋ฌธ์๊ฐ HashMap์ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ์คํํ๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค > ์๊ณ ๋ฆฌ์ฆ ํ์ด(Java)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค_์ฝ๋ผ ๋ฌธ์ (0) | 2024.12.11 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค_ํธ๋ ํ์ดํธ ๋ํ (0) | 2024.12.10 |
ํ๋ก๊ทธ๋๋จธ์ค_๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ (0) | 2024.12.05 |
ํ๋ก๊ทธ๋๋จธ์ค_K๋ฒ์งธ์ (0) | 2024.12.04 |
ํ๋ก๊ทธ๋๋จธ์ค_๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ (0) | 2024.12.03 |