ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

๋ฌธ์ œ ์„ค๋ช…

0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด ์ฃผ์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 6210์ž…๋‹ˆ๋‹ค.

0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ˆœ์„œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • numbers์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • numbers์˜ ์›์†Œ๋Š” 0 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ •๋‹ต์ด ๋„ˆ๋ฌด ํด ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

numbersreturn

[6, 10, 2] "6210"
[3, 30, 34, 5, 9] "9534330"

 

๋ฌธ์ œํ’€์ด

https://choi95.tistory.com/120?category=881084

 

์ˆœ์—ด ๊ตฌํ•˜๊ธฐ

๋ฌธ์ œ 10์ดํ•˜์˜ N๊ฐœ์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์ด ์ค‘ M๊ฐœ๋ฅผ ๋ฝ‘์•„ ์ผ๋ ฌ๋กœ ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œํ’€์ด ์ค‘๋ณต์„ ํ—ˆ๋ฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ์ฒดํฌ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ด์ „์— ์ฐธ์กฐํ–ˆ๋˜ value์ผ

choi95.tistory.com

์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค๋Š” ์ ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆœ์—ด ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œ์™€ ๊ฐ™์ด ๊นŠ์ด ํƒ์ƒ‰(DFS)๋ฅผ ํ†ตํ•ด ํ’€์ดํ•˜์˜€๋‹ค.

 

์ฝ”๋“œ

function solution(numbers) {
  var answer = "";
  let max = Number.MIN_SAFE_INTEGER;
  let n = numbers.length;
  let ch = Array.from({ length: n }, () => 0);
  let tmp = [];
  
  function DFS(L) {
    if (L === n) {
      max = Math.max(max, Number(tmp.join('')));
      return;
    } else {
      for (let i = 0; i < n; i++) {
        if (ch[i] === 0) {
          ch[i] = 1;
          tmp.push(numbers[i]); //์žฌ๊ท€๋ฅผ ํ•œ ๋ฒˆ์”ฉ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ž„์˜์˜ ๋ฐฐ์—ด์— push
          DFS(L + 1);
          tmp.pop(numbers[i]); //๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ•  ๊ฒฝ์šฐ์—๋Š” ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฐธ์กฐ๋œ ์ˆ˜๋ฅผ ๋‹ค์‹œ pop
          ch[i] = 0;
        }
      }
    }
  }

  DFS(0);
  answer = String(max);
  return answer;
}

 

์˜ค๋‹ต

์ฝ”๋“œ ์‹คํ–‰์„ ํ–ˆ์„ ๋•Œ๋Š” ์˜ˆ์‹œ ์ผ€์ด์Šค๋ฅผ ๋ชจ๋‘ ํ†ต๊ณผํ•˜์˜€์ง€๋งŒ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋Œ๋ ธ์„ ๋•Œ๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ธํ•ด ์˜ค๋‹ต ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค.

๋ฌธ์ œ์˜ ๋กœ์ง์€ ๋งž๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉฐ ๋ฐ˜๋ณต๋ฌธ์„ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„ ๋ณต์žก๋„ ํšจ์œจ์ด ์ข‹์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค.

 

๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ธ +์™€ ์—ผ๋‘์— ๋‘๊ณ  ์žˆ์—ˆ๋‹ค๋ฉด ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์˜€๋‹ค.๋ฐฐ์—ด ๋‚ด ๊ฐ ์š”์†Œ๋ฅผ ๋ฌธ์ž ํƒ€์ž…์œผ๋กœ ์น˜ํ™˜ํ•ด์ค€ ๋’ค์— ๋ฌธ์ž ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์„ ํ•˜์—ฌ ์ •๋ ฌ(sort)๋งŒ ํ•ด์ฃผ๋ฉด ๋˜์—ˆ๋‹ค.

 

Array.prototype.sort()

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ Array.prototype.sort() ๋ฉ”์„œ๋“œ์— ๊ด€ํ•ด์„œ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์„ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์–ด์„œ ํฌ์ŠคํŒ…ํ•ด๋‘๊ณ ์ž ํ•œ๋‹ค.

 

์ง€๊ธˆ๊นŒ์ง€๋Š” sort() ๋ฉ”์„œ๋“œ ๋‚ด ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋‘ ์ธ์ž a, b์— ๋Œ€ํ•ด์„œ ์ •๋ง ๋ง‰์—ฐํ•˜๊ฒŒ ์–‘์˜†์— ๋ถ™์–ด ์žˆ๋Š” ์ˆซ์ž๋ผ๊ณ ๋งŒ ์ƒ๊ฐ์„ ํ–ˆ์—ˆ์ง€๋งŒ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•˜๋‹ค ๋ณด๋‹ˆ, ์ด์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ƒ๊ฐํ•ด๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.

[5, 3, 4, 2, 1] 
a & b = ( 5, 3 / 3, 4 / 4, 1/ 1, 2 ... )
=> ๊ณผ์—ฐ ๋‘ ์ธ์ˆ˜๊ฐ€ ์ด๋Ÿฐ ์‹์œผ๋กœ ๋‹จ์ˆœํžˆ ๋ถ™์–ด ์žˆ๋Š” ์ˆซ์ž์ผ๊นŒ?

 

์ด์— ๊ด€๋ จ๋˜์–ด ๊ตฌ๊ธ€๋งํ•˜์—ฌ ์ฐพ์•„ ๋ณด๋‹ˆ, ๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์„ค๊ณ„ ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ณ„์‚ฐ ์ ˆ์ฐจ๋ฅผ ๋™์ ์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

Mozilla๋Š” ๋ณ‘ํ•ฉ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์˜ค๋Š˜ ๋‚  Chrome์˜ v8 ์†Œ์Šค ์ฝ”๋“œ์—์„œ๋Š” ๋” ์ž‘์€ ๋ฐฐ์—ด์— QuickSort ๋ฐ InsertionSort๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฝ์ž… ์ •๋ ฌ๋ฅผ ํ†ตํ•ด ์œ„ ๋ฐฐ์—ด์˜ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ๊ณผ์ •์„ ์‚ดํŽด ๋ณด์ž.

a(๊ธฐ์ค€) - b

5 - 3 = 2 (return ์–‘์ˆ˜ => ์ˆœ์„œ ๋ฐ”๋€œ)
3 - 4 = -1 (return ์Œ์ˆ˜ => ์ˆœ์„œ ๊ทธ๋Œ€๋กœ)
3 - 2 = 1 (return ์–‘์ˆ˜ => ์ˆœ์„œ ๋ฐ”๋€œ)
2 - 1 = 1 (return ์–‘์ˆ˜ => ์ˆœ์„œ ๋ฐ”๋€œ)

 

์ด๋Ÿฐ ์‹์œผ๋กœ ๋‹จ์ˆœํžˆ ์ž์‹ ๊ณผ ์ธ์ ‘ํ•ด ์žˆ๋Š” ๋ชจ๋“  ์ˆ˜๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฒ„๋ธ” ์ •๋ ฌ ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌ๋  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ณ ์ •๋œ ๊ธฐ์ค€ ํ•˜์— ๊ทธ ๋’ค์— ๊ฐ’๋“ค์„ ์ˆœํšŒํ•˜๋ฉฐ ๋น„๊ตํ•˜๋Š” ์‚ฝ์ž… ์ •๋ ฌ ๋ฐฉ์‹์œผ๋กœ๋„ sort() ๋ฉ”์„œ๋“œ์˜ compare ์—ฐ์‚ฐ ๊ณผ์ •์ด ์ง„ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.

 

https://choi95.tistory.com/94

 

์‚ฝ์ž… ์ •๋ ฌ

๋ฌธ์ œ N๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์‚ฝ์ž… ์ •๋ ฌ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œํ’€์ด ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort) ์† ์•ˆ์˜ ์นด๋“œ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์œ ์‚ฌ

choi95.tistory.com

 

์•„์ง๊นŒ์ง„ sort() ๋ฉ”์„œ๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•˜์˜€์ง€๋งŒ, ์ด์ „์— sort() ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ํŽธํ˜‘๋œ ์ง€์‹์œผ๋กœ ์ธํ•ด ์ž˜ ํ™œ์šฉํ•˜์ง€ ๋ชปํ–ˆ์—ˆ๊ธฐ์— ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๋งค์šฐ ์œ ์˜๋ฏธํ–ˆ๋‹ค.

 

์ฝ”๋“œ

function solution(numbers) {
    const answer = numbers.map((number) => number.toString()).sort((a, b) => (b+a) - (a+b)).join("") //๋ฌธ์ž์—ด์ด๊ธฐ์— ๊ฐ€๋Šฅํ•œ + ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์„ ํ†ตํ•œ value ๋น„๊ต 
    return answer.replace(/^0+/, "0"); // ๋ฌธ์ž ๋งจ ์•ž์— 0์ด 1ํšŒ์ด์ƒ ๋ฐ˜๋ณต๋˜์–ด์งˆ ๊ฒฝ์šฐ 0์œผ๋กœ ์น˜ํ™˜
}

 

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

function solution(strings, n) {
    var answer = [];
    answer = strings.sort((a, b) => {
      if(a[n].charCodeAt() === b[n].charCodeAt()) {
        let len = Math.max(a.length, b.length);
        for(let i = 0; i < len; i++) {
            if(a[i] !== b[i]) return a[i] - b[i];
        };
      } else return a[n] - b[n]
    });

    return answer;
}
๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ