๐Ÿ‘’ ๋ญ? JS๋กœ PS๋ฅผ ํ•œ๋‹ค๊ณ ?

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][JS / Javascript] [3์ฐจ] ์••์ถ•

์„ ๋‹ฌ 2023. 5. 25. 23:36
๋ฐ˜์‘ํ˜•

http://school.programmers.co.kr/learn/courses/30/lessons/17684/solution_groups?language=javascript 

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

 

ํ’€์ด

์ž๋ฃŒ๊ตฌ์กฐ map์„ ์ด์šฉํ•˜์˜€๋‹ค.

C++์ฒ˜๋Ÿผ 'A'+1 ์ด๋Ÿฐ char ์—ฐ์‚ฐ์ด ์•ˆ๋˜์–ด์„œ ๋‹นํ™ฉํ–ˆ๋Š”๋ฐ ์ž ์‹œ A~Z๊นŒ์ง€ ๋…ธ๊ฐ€๋‹ค๋กœ ๋„ฃ์„๊นŒ ํ•˜๋‹ค๊ฐ€ ์˜ค๋ฐ”์ธ๊ฒƒ ๊ฐ™์•„์„œ ์„œ์น˜ํ–ˆ๋‹ค

JS์—๋Š” String.fromCharCode()๋ผ๋˜๊ฐ€ charCodeAt() ๊ฐ™์€๊ฒŒ ์žˆ๋”๋ผ.

์•„๋ฌดํŠผ ๊ทธ๋ฆฌํ•˜์—ฌ ์‚ฌ์ „์— ํ•ด๋‹นํ•˜๋Š” dict ๋งต์„ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค

 

์ดํ›„ ๋ฌธ์ œ์— ๋‚˜์™€์žˆ๋Š” ๋Œ€๋กœ ๊ตฌํ˜„์„ ํ–ˆ๋‹ค

1. ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ฐ€์žฅ ๊ธด ๋ฌธ์ž์—ด์„ ์ฐพ๋Š”๋‹ค

2. ์ด ๋ฌธ์ž์—ด์ด ์‚ฌ์ „์— ์žˆ์„๋•Œ๊นŒ์ง€ ๊ธธ์ด๋ฅผ ๋์—์„œ ์ค„์—ฌ๋‚˜๊ฐ„๋‹ค

3. ์ตœ์ดˆ๋กœ ์‚ฌ์ „์— ์žˆ๋Š”๊ฒŒ ๋ฐœ๊ฒฌ๋˜์—ˆ์„ ๋•Œ, ์ด ๋ฌธ์ž์—ด์ด ๋ฐ”๋กœ ์‚ฌ์ „์— ์กด์žฌํ•˜๋Š” ๊ฐ€์žฅ ๊ธด ๋ฌธ์ž์—ด์ด๋‹ค.

 

4. ์ด ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅ (ans.push()) ํ•˜๊ณ 

5. ๋‹ค์Œ ๋‹จ์–ด๋ฅผ ํฌํ•จ์‹œ์ผœ์„œ ์‚ฌ์ „์— ๋„ฃ๊ณ  (map.set())

6. ๋ฐฉ๊ธˆ ์“ด ๋ฌธ์ž์—ด ์ž˜๋ผ๋‚ด๋ฒ„๋ฆฌ๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„ ๋ฐ˜๋ณต

function solution(msg) {
    let dic = new Map();
    for(let i=1; i<=26; i++)
        dic.set(String.fromCharCode("A".charCodeAt(0)+i-1), i);

    let idx = 27;
    let ans = [];
    while(msg !== '') {
        for(let i=msg.length; i>=0; i--) {
            const w = msg.slice(0, i);
            const c = msg.slice(i, i+1);
            if(dic.has(w)) {
                ans.push(dic.get(w));
                dic.set(w+c, idx);
                idx++;
                msg = msg.slice(i, msg.length);
                break;
            }
        }
    }
    return ans;
}
๋ฐ˜์‘ํ˜•