๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[Javascript/PGS] Lv.2 : ๋ฐฉ๋ฌธ ๊ธธ์ด (Set)

by xxilliant 2025. 3. 3.
728x90
๋ฐ˜์‘ํ˜•

 

https://school.programmers.co.kr/learn/courses/30/lessons/49994?language=javascript

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ2.

set ์ž๋ฃŒํ˜•์„ ํ™œ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์ œ๋Š”.. 

๊ฐ์ฒด(๋ฐฐ์—ด ํฌํ•จ)๋Š” ์ฐธ์กฐ(reference)๋กœ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ ๋ฐฐ์—ด์ด ์—ฌ๋Ÿฌ ๊ฐœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค

์˜๋„๋Œ€๋กœ ๋ฐฐ์—ด์„ Set์— ๋„ฃ์–ด์„œ ์“ฐ๋ ค๋ฉด ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ”์•ผ ํ•จ ใ…Žใ…Ž

 

๋‹ค๋ฅธ ์–ธ์–ด๋„ ๊ทธ๋Ÿฐ๊ฐ€ ์‹ถ์–ด์„œ C++, ํŒŒ์ด์ฌ๋„ gptํ•œํ…Œ ๋ฌผ์–ด๋ดค๋‹ค


๐Ÿš€ ์ •๋ฆฌ: ์–ธ์–ด๋ณ„ Set์—์„œ ๋ฐฐ์—ด(๊ฐ์ฒด)์˜ ์ค‘๋ณต ๋น„๊ต ๋ฐฉ์‹

์–ธ์–ด ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• (int, string ๋“ฑ) ๋ฐฐ์—ด(๋ฆฌ์ŠคํŠธ, ๋ฒกํ„ฐ ๋“ฑ) ๋น„๊ต ๋ฐฉ์‹
JavaScript ๊ฐ’ ๋น„๊ต ์ฐธ์กฐ(reference) ๋น„๊ต → ๊ฐ’์ด ๊ฐ™์•„๋„ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰
Python ๊ฐ’ ๋น„๊ต ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ tuple๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ, ๊ฐ’ ๋น„๊ต
C++ ๊ฐ’ ๋น„๊ต ๊ฐ’ ๋น„๊ต(operator< ์‚ฌ์šฉ), ๊ฐ™์€ ๊ฐ’์ด๋ฉด ์ค‘๋ณต ์ œ๊ฑฐ

 

โœ… JavaScript๋งŒ ๋ฐฐ์—ด์„ ์ฐธ์กฐ(reference)๋กœ ๋น„๊ตํ•˜๊ณ , Python๊ณผ C++์€ ๊ฐ’(value)์œผ๋กœ ๋น„๊ตํ•˜๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์–ด!

๐Ÿ‘‰ JavaScript์—์„œ ๋ฐฐ์—ด์„ Set์— ์ €์žฅํ•  ๋•Œ ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด JSON.stringify() ๊ฐ™์€ ๋ณ€ํ™˜์ด ํ•„์š”! ๐Ÿ˜Š


 

 

๋‚˜์˜ ํ’€์ด

// up, right, down, left
let dx = [0,1,0,-1];
let dy = [1,0,-1,0];

function outOfRange(x,y){
    if(x<-5 || x>5 || y<-5 || y>5) return true;
    return false;
}

function solution(dirs) {
    let move = new Set();
    let answer = 0;
    let nx = 0;
    let ny = 0;
    let idx = 0;
    for(let i=0; i<dirs.length; ++i){
        switch(dirs[i]){
            case 'U': idx=0;
                break;
            case 'R': idx=1;
                break;
            case 'D': idx=2;
                break;
            default: idx=3;
        }
        if(outOfRange(nx+dx[idx], ny+dy[idx])) continue;
        let newX = nx+dx[idx];
        let newY = ny+dy[idx];
        let arr = [ [nx, ny], [nx+dx[idx], ny+dy[idx]] ];
        arr.sort();
        move.add(JSON.stringify(arr))
        nx = newX;
        ny = newY;
    }
    // console.log(move);
    answer = move.size;
    return answer;
}

 

728x90
๋ฐ˜์‘ํ˜•