๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ] section07 - 3 - Special Sort(๊ตฌ๊ธ€ ์ธํ„ฐ๋ทฐ)

by YWTechIT 2021. 9. 8.
728x90

๐Ÿ“ section07 - 3 - Special Sort(๊ตฌ๊ธ€ ์ธํ„ฐ๋ทฐ)

๋ฌธ์ œ: ์Œ์˜ ์ •์ˆ˜๋Š” ์•ž์ชฝ์— ์–‘์˜ ์ •์ˆ˜๋Š” ๋’ค์ชฝ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ, ์–‘์˜ ์ •์ˆ˜์™€ ์Œ์˜ ์ •์ˆ˜์˜ ์ˆœ์„œ๋Š” ๋ณ€ํ•จ์ด ์—†์–ด์•ผ ํ•œ๋‹ค. GeeksforGeeks์—์„œ ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ ธ์™”๋‹ค. ์˜์–ด๋กœ ํ’€๊ณ  ์‹ถ์œผ๋ฉด ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€์„œ ํ‘ธ๋Š”๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ’€๋•Œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ๋– ์˜ฌ๋ž๋‹ค.

 

  1. ํ•œ ๊ฐœ๋Š” for๋ฌธ์„ ๋Œ๋ฉด์„œ ์Œ์ˆ˜ ๋จผ์ € answer์— pushํ•˜๊ณ  ๋˜ for๋ฌธ์„ ๋Œ๋ฉด์„œ ์–‘์ˆ˜๋ฅผ answer์— push ํ•˜๋Š” ๋ฐฉ๋ฒ•
  2. ๋ฒ„๋ธ” ์ •๋ ฌ ๋ฐฉ์‹์˜ ์ผ๋ถ€๋ฅผ ๊ฐ€์ ธ์™€์„œ j๊ฐ€ ์Œ์ˆ˜์ด๊ณ  j+1์ด ์–‘์ˆ˜๋ฉด swapํ•˜๋Š” ๋ฐฉ๋ฒ•

 

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” 1๋ฒˆ(O(N))์œผ๋กœ ๋” ๋น ๋ฅด์ง€๋งŒ ๋งŒ์•ฝ, ์ฝ”๋”ฉ ์ธํ„ฐ๋ทฐ๋ฅผ ํ•  ๋•Œ ์ •๋ ฌ์„ ์ด์šฉํ•ด์„œ ํ’€์–ด๋ณด๋ผ๊ณ  ํ•  ๋•Œ๋Š” 2๋ฒˆ(O(N^2))์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

728x90

 

// 1๋ฒˆ ๋ฐฉ๋ฒ•
let n = 8;
let arr = [1, 2, 3, -3, -2, 5, 6, -6];

console.log(solution(n, arr));
๐Ÿ‘‰๐Ÿฝ [ -3, -2, -6, 1, 2, 3, 5, 6 ]

function solution(n, arr){
    let answer = [];

    for (let x of arr){
        if (x<0) answer.push(x);
    }

    for (let x of arr){
        if (x>0) answer.push(x);
    }
    return answer
}

 

// 2๋ฒˆ ๋ฐฉ๋ฒ•
let n = 8;
let arr = [1, 2, 3, -3, -2, 5, 6, -6];

console.log(solution(n, arr));
๐Ÿ‘‰๐Ÿฝ [ -3, -2, -6, 1, 2, 3, 5, 6 ]

function solution(n, arr){
    for (let i=0; i<n-1; i++){
        for (let j=0; j<n-i-1; j++){
            if (arr[j]>0 && arr[j+1]<0) [arr[j], arr[j+1]] = [arr[j+1], arr[j]]
        }
    }
    return arr;
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€