ํฐ์คํ ๋ฆฌ ๋ทฐ
[๋ฌธ์ ]
https://programmers.co.kr/learn/courses/30/lessons/67258
[ํ์ด]
ํฌํฌ์ธํฐ ๋ฐฉ์์ผ๋ก ๋ฐฐ์ด์ ํ์ํ๋ ๋ฐฉ๋ฒ์ด ํต์ฌ์ธ ๋ฌธ์ ์์ต๋๋ค.
์ฐ์ , ์ด๊ธฐ์ ํ์ํ ์๋ฃ๋ฅผ ์ธํ ํ์์ต๋๋ค.
- Set<String> set์ผ๋ก ๋ณด์์ ๊ฐ์๋ฅผ ์ ์ฅํ์์ต๋๋ค.
- gems๋ฅผ ํ์ํ์ฌ Map<String, Integer> pick์ ๊ฐ ๋ณด์์ ๊ฐ์๋ฅผ ์ ์ฅํ๋ฉฐ ๋งจ์์์ ๊ตฌํ ์ ์๋ ๋ณด์์ธํธ๋ฅผ ์ ์ฅํด์ ์ด๊ธฐ start์ end๋ฅผ ์ ์ฅํ์์ต๋๋ค.
๊ทธ๋ค์, ํฌํฌ์ธํฐ ๋ฐฉ์์ผ๋ก left๋ฅผ right๋ฅผ ๊ฐฑ์ ํ๋ฉฐ gems๋ฐฐ์ด์ ๋๊น์ง ์๋ก์ด ๋ณด์์ธํธ๋ฅผ ๋ง๋ค์์ต๋๋ค.
- left = start, right = end๋ฅผ ์ ์ฅํ๊ณ , right < gems.length ๊น์ง ํ์
- right++ํตํด ์ค๋ฅธ์ชฝ์ผ๋ก ํ์นธ ํ์ฅํ๊ณ , left๋ถํฐ pick์์ ๋ณด์๊ฐ์๋ฅผ ๊ตฌํด์, ๊ฒน์น๋ ๋ณด์์ด ์๋ค๋ฉด ( ๋ณด์์ด 2๊ฐ ์ด์์ด๋ผ๋ฉด ) ๋ณด์์ ์ ๊ฑฐํ๋ฉฐ left++๋ฅผ ์งํํ์์ต๋๋ค.
์ฌ๊ธฐ์ ํต์ฌ์, ๊ฐ ๋ณด์์ด ์ต์ 1๊ฐ๋ ์์ด์ผ์ง ๋ณด์์ธํธ๊ฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์, ๋ง์ฝ ํ์ฌ left๊ฐ ๊ฐ๋ฅดํค๋ ๋ณด์์ด pick์ 1๊ฐ๋ง ์กด์ฌํ๋ค๋ฉด, left ๊ฐฑ์ ์ ์ค๋จ๋ฉ๋๋ค.
[์ฝ๋]
import java.util.*;
class Solution {
public static int N = 0; // ์ค๋ณต ์ ๊ฑฐ๋ ๋ณด์์ ์ด ๊ฐ์
public static int start = 0;
public static int end = 0;
public int[] solution(String[] gems) {
int[] answer = new int[2];
// ๋ณด์์ ๊ฐ์ ๊ตฌํ๊ธฐ
Set<String> set = new HashSet<String>();
for(int i=0;i<gems.length;i++) {
set.add(gems[i]);
}
N = set.size();
Map<String, Integer> pick = new HashMap<String,Integer>();
for(int i=start;i<gems.length;i++) {
if(pick.get(gems[i]) == null) {
pick.put(gems[i], 1);
} else {
int cnt = pick.get(gems[i]) + 1;
pick.put(gems[i], pick.get(gems[i]) + 1);
}
if(pick.size() == N) {
end = i;
break;
}
}
for(int i=start;i<end;i++) {
if(pick.get(gems[i]) == 1) {
start = i;
break;
} else {
int cnt = pick.get(gems[i]) - 1;
pick.put(gems[i], cnt);
}
}
int left = start;
int right = end + 1;
while(right < gems.length) {
int cnt = pick.get(gems[right]) + 1;
pick.put(gems[right], cnt);
// ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ฅ
for(int i=left;i<=right;i++) {
cnt = pick.get(gems[i]);
if(cnt == 1) {
left = i;
break;
} else {
pick.put(gems[i], cnt - 1);
}
}
if((right - left) < (end - start)) {
start = left;
end = right;
}
right++;
}
answer[0] = start + 1;
answer[1] = end + 1;
return answer;
}
}
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ๋๊ตด ํํ (0) | 2022.07.07 |
---|---|
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ๋น๋ฐ์ง๋ (0) | 2022.07.07 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ์์ ์ต๋ํ (0) | 2022.07.03 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ํคํจ๋ ๋๋ฅด๊ธฐ (0) | 2022.07.03 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ์ถ์ ํธ๋ํฝ (0) | 2022.06.13 |
๊ณต์ง์ฌํญ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ
- Total
- Today
- Yesterday
๋งํฌ
TAG
- ๋ฐฑ์ค
- Baekjoon
- http
- ๋ฐฑ์ค node.js
- ์นด์นด์ค ์ธํด
- ์๋ฐ์คํฌ๋ฆฝํธ
- fp
- ์ฝ๋ฉํ ์คํธ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ์๊ณ ๋ฆฌ์ฆ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ํฌํฌ์ธํฐ
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ์ด๋ถํ์
- map
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฐฑ์ค javascript
- git
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- JavaScript
- ํ๋กํผํฐ
- TDD
- ์ด์์ฒด์
- ์๋ฐ
- ์ ์ญ ๋ณ์
- ๋คํธ์ํฌ
- ๋์์ธ ํจํด
- ํ๋กํ ์ฝ
- ๋ ์์ปฌ ํ๊ฒฝ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
๊ธ ๋ณด๊ดํจ