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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][JS / Javascript] n^2 ๋ฐฐ์—ด ์ž๋ฅด๊ธฐ

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

https://school.programmers.co.kr/learn/courses/30/lessons/87390

 

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

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

programmers.co.kr

 

ํ’€์ด

 

์ฒ˜์Œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜์˜€์œผ๋‚˜ ๋ช‡๋ช‡ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์—์„œ ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค

function solution(n, left, right) {
    let ans = [];
    for(let i=0; i<n; i++)
        for(let j=0; j<n; j++)
            ans.push((i>j ? i : j)+1);
    return ans.slice(left, right+1);
}

 

์กฐ๊ฑด์„ ๋‹ค์‹œ ๋ณด๋‹ˆ n์˜ ๊ฐ’์ด ์ƒ๋‹นํžˆ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•ด๋ณด์˜€๊ณ ,

์ดํ›„ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋„๋ก ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ์—ˆ๋‹ค

 

function solution(n, left, right) {
    let ans = [];
    for(let i=Math.floor(left/n); i<=Math.floor(right/n); i++) {
        for(let j=0; j<n; j++) {
            ans.push((i>j ? i : j)+1);
        }
    }

    for(let i=0; i<Math.floor(left%n); i++)
        ans.shift();
    for(let i=0; i<n - Math.floor(right%n) - 1; i++)
        ans.pop();
    
    return ans;
}

 

๊ทธ๋žฌ๋”๋‹ˆ ์ด์ œ๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค.

O(n^2)๋กœ๋Š” ๋„์ €ํžˆ ์•ˆ๋˜๋Š” ๊น๊นํ•œ ๋ฌธ์ œ ๊ฐ™์•„์„œ O(n)์œผ๋กœ ๋ฐ”๊ฟ”์คฌ๋‹ค

 

function solution(n, left, right) {
    let ans = [];
    for(let x=left; x<=right; x++) {
        let i = Math.floor(x/n);
        let j = Math.floor(x%n);
        ans.push((i>j ? i : j)+1);
    }
    return ans;
}

 

์„ฑ๊ณต!

๋ฐ˜์‘ํ˜•