[ JavaScript ์•Œ๊ณ ๋ฆฌ์ฆ˜ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค)] ๋ฌธ์ž์—ด ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ

2023. 8. 16. 01:32ใ†5. Algorithm

  • ๋ฌธ์ž์—ด ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ

 

1. ๋ฌธ์ œ์„ค๋ช…

๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑ๋œ ๋ฆฌ์ŠคํŠธ strings์™€, ์ •์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ ๋ฌธ์ž์—ด์˜ ์ธ๋ฑ์Šค n๋ฒˆ์งธ ๊ธ€์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด strings๊ฐ€ ["sun", "bed", "car"]์ด๊ณ  n์ด 1์ด๋ฉด ๊ฐ ๋‹จ์–ด์˜ ์ธ๋ฑ์Šค 1์˜ ๋ฌธ์ž "u", "e", "a"๋กœ strings๋ฅผ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

 

2. ์ž…์ถœ๋ ฅ ์˜ˆ

3. ์ œํ•œ์‚ฌํ•ญ

  • strings๋Š” ๊ธธ์ด 1 ์ด์ƒ, 50์ดํ•˜์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • strings์˜ ์›์†Œ๋Š” ์†Œ๋ฌธ์ž ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • strings์˜ ์›์†Œ๋Š” ๊ธธ์ด 1 ์ด์ƒ, 100์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋“  strings์˜ ์›์†Œ์˜ ๊ธธ์ด๋Š” n๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค 1์˜ ๋ฌธ์ž๊ฐ€ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ์—ฌ๋Ÿฟ ์ผ ๊ฒฝ์šฐ, ์‚ฌ์ „์ˆœ์œผ๋กœ ์•ž์„  ๋ฌธ์ž์—ด์ด ์•ž์ชฝ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค

 

4. ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

 

์ž…์ถœ๋ ฅ ์˜ˆ 1
"sun", "bed", "car"์˜ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์€ ๊ฐ๊ฐ "u", "e", "a" ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ strings๋ฅผ ์ •๋ ฌํ•˜๋ฉด ["car", "bed", "sun"] ์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ 2
"abce"์™€ "abcd", "cdx"์˜ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์€ "c", "c", "x"์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ •๋ ฌ ํ›„์—๋Š” "cdx"๊ฐ€ ๊ฐ€์žฅ ๋’ค์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. "abce"์™€ "abcd"๋Š” ์‚ฌ์ „์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด "abcd"๊ฐ€ ์šฐ์„ ํ•˜๋ฏ€๋กœ, ๋‹ต์€ ["abcd", "abce", "cdx"] ์ž…๋‹ˆ๋‹ค.


[ ๋‚ด๊ฐ€ํ•œ ๋ฌธ์ œ ํ’€์ด ]

function solution(strings, n) {
    strings.sort(function(a,b){
        if(a[n] > b[n]) return 1;
        if(b[n] > a[n]) return -1;

        if(a > b) return 1;
        if(b > a) return -1;

        return 0;
    });
    return strings;
}

 

* ์ฃผ์„์ถ”๊ฐ€ 

// solution์ด๋ผ๋Š” ํ•จ์ˆ˜์— strings์™€ n์ด๋ผ๋Š” ๋‘ ๊ฐœ์˜ ๊ฐ’์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

function solution(strings, n) {
    // strings๋ผ๋Š” ๋ฐฐ์—ด์„ sort๋ผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ ฌ.
    strings.sort(function(a,b){
        // a์™€ b์˜ n๋ฒˆ์งธ ๊ธ€์ž๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ a์˜ n๋ฒˆ์งธ ๊ธ€์ž๊ฐ€ 
        //b์˜ n๋ฒˆ์งธ ๊ธ€์ž๋ณด๋‹ค ๋’ค์— ์žˆ์œผ๋ฉด 1์„ ๋Œ๋ ค์ค๋‹ˆ๋‹ค.a๊ฐ€ b๋ณด๋‹ค ๋’ค์— ์˜ค๋„๋กํ•จ.
        if(a[n] > b[n]) return 1;
        // b์˜ n๋ฒˆ์งธ ๊ธ€์ž๊ฐ€ a์˜ n๋ฒˆ์งธ ๊ธ€์ž๋ณด๋‹ค ๋’ค์— ์žˆ์œผ๋ฉด -1์„ ๋Œ๋ ค์ค๋‹ˆ๋‹ค.b๊ฐ€ a๋ณด๋‹ค ๋’ค์— ์˜ค๋„๋กํ•จ.
        if(b[n] > a[n]) return -1;

        // ๋งŒ์•ฝ a๊ฐ€ b๋ณด๋‹ค ๋’ค์— ์žˆ์œผ๋ฉด 1์„ ๋Œ๋ ค์ค๋‹ˆ๋‹ค.
        if(a > b) return 1;
        // ๋ฐ˜๋Œ€๋กœ b๊ฐ€ a๋ณด๋‹ค ๋’ค์— ์žˆ์œผ๋ฉด -1์„ ๋Œ๋ ค์ค๋‹ˆ๋‹ค.
        if(b > a) return -1;

        // ๋งŒ์•ฝ a์™€ b๊ฐ€ ๊ฐ™๋‹ค๋ฉด 0์„ ๋Œ๋ ค์ค๋‹ˆ๋‹ค.
        return 0;
    });

    return strings;
}

* sort ๋ฉ”์„œ๋“œ :

sort๋ฉ”์†Œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ž์—ด์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋‚˜ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ์š”์†Œ๋ฅผ ์ •๋ ฌํ•˜๋ ค๋ฉด ๋น„๊ต ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

 

Array.prototype.sort() - JavaScript | MDN

sort() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์ •๋ ฌํ•œ ํ›„ ๊ทธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ ฌ์€ stable sort๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ •๋ ฌ ์ˆœ์„œ๋Š” ๋ฌธ์ž์—ด์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

developer.mozilla.org