https://school.programmers.co.kr/learn/courses/30/lessons/67258
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 3.
์ฒ์์ ์ด์ค ๋ฐ๋ณต๋ฌธ์ผ๋ก ํ์๋ค๊ฐ ๋ฒ์ ๋ณด๋ ์๊ฐ์ด๊ณผ๋ ๊ฒ ๊ฐ์์ ๊ฐ์์์๋ค.
ํฌํฌ์ธํฐ/์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ฅผ ์ ์ฉํด์ผํ๋ ๋ฌธ์ ์ธ๊ฑด ๋์น๋ฅผ ์ฑ๋๋ฐ
๊ตฌํ ๋ฐฉ์์ด ๊ฐ๋ฌผ๊ฐ๋ฌผํด์ ๊ณ ์ ํ๋ค..^-^
๊ทธ๋ฆฌ๊ณ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ฅผ ์๋ชป ์ ์ฉํด์ ๋นํจ์จ์ ์ธ ์ฝ๋๊ฐ ๋จ. (๊ทธ๋ฅ ๊ณ์ ์ฐฝ๋ฌธ ๋ง๋๋ ์ฌ๋ ๋จ)
๊ฐ์ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋ Map์ ์ฌ์ฉํด์ Set๊ณผ ๊ฐฏ์ ๋น๊ต๋ฅผ ํ๋ฉด ๋๋ค๊ณ ํ๊ธธ๋ ๊น์ง ๋๋๋ค
์ค์ ์์ ์ด๋ฐ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๋ ค๋ฉด ๋ ์ด์ฌํ ํด์ผ๊ฒ ์ใ
์๊ฐํด๋ณด๋ Map๋ key๊ฐ ์ค๋ณต์ด ์๋๋๊น Set์ด๋ ์ข ๋ฅ ๊ฐฏ์ ๋น๊ต๊ฐ ๊ฐ๋ฅํ๋ค
๋์ ํ์ด
var answer = [];
function solution(gems) {
let gemSet = new Set(gems);
let size = gemSet.size;
let start = 0;
let end = 0;
let gemCount = new Map(); // ํ์ฌ ์๋์ฐ ๋ด ๋ณด์ ๊ฐ์
let min = 100001;
// ๊ฐ ์ธ๋ฑ์ค start์์ ์ต์ end๊ฐ ์ฐพ๊ธฐ
while(end < gems.length){
gemCount.set(gems[end], (gemCount.get(gems[end])||0) + 1);
while(size == gemCount.size){ // ์๋์ฐ ๋ด๋ถ์ ์ข
๋ฅ ๊ฐฏ์๊ฐ ๊ฐ์ ๋์
if(min > end-start){
min = end-start;
answer = [start+1, end+1];
}
// ์๋ถ๋ถ ์ ๊ฑฐ ํ start + 1 (์ถ์)
gemCount.set(gems[start], gemCount.get(gems[start]) - 1);
if (gemCount.get(gems[start]) === 0) {
gemCount.delete(gems[start]);
}
start++;
}
// ์ข
๋ฅ ๊ฐฏ์๊ฐ ๋ค๋ฅด๋ค๋ฉด end + 1 (ํ์ฅ)
end++;
}
return answer;
}
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ3 ์ ๋ต๋ฅ 50%๋ ์ดํ๋ถํฐ๋ ๊ฒฐ์ฝ ๋ง๋งํ์ง ์๋ค....
๋ณต์ตํด์ผ์ง!!
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript/PGS] Lv.2 : ํผ์ฆ ๊ฒ์ ์ฑ๋ฆฐ์ง (PCCP ๊ธฐ์ถ๋ฌธ์ 2๋ฒ) (0) | 2025.03.25 |
---|---|
[Javascript/PGS] Lv.3 : ์ฌํ๊ฒฝ๋ก (0) | 2025.03.24 |
[Javascript/PGS] Lv.3 : ๋ถ๋๋ณต๊ท (0) | 2025.03.20 |
[Javascript/PGS] Lv.3 : ๋ถ๋ ์ฌ์ฉ์(2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ) (0) | 2025.03.20 |
[Javascript/PGS] Lv.2 : ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ(2022 KAKAO BLIND RECRUITMENT) (0) | 2025.03.19 |