๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿฆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

[JS] ์ •๋ ฌ ๋ฉ”์†Œ๋“œ ํ™œ์šฉํ•˜๊ธฐ

1. Array.prototype.sort() ๋ฉ”์†Œ๋“œ ์„ค๋ช…๊ณผ ์˜ˆ์‹œ
2. Leetcode 1366. Rank Teams by Votes ๋ฌธ์ œํ’€์ด

 

Array.prototype.sort([compareFunction])

.sort()๋Š” ๋ฐฐ์—ด์˜ ์›์†Œ๋“ค์„ in-place๋กœ ์ •๋ ฌํ•ด์ฃผ๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค. ์ •๋ ฌ๋œ ๋ณต์‚ฌ๋ณธ์ด ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์› ๋ฐฐ์—ด์ด ์ •๋ ฌ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค. 

 

 

์ˆซ์ž์˜ ์‹ค์ œ ํฌ๊ธฐ๋Œ€๋กœ ์ •๋ ฌํ–ˆ๋‹ค๋ฉด 11,000,000์ด ๋งจ ๋’ค๋กœ ๊ฐ€์•ผํ–ˆ์ง€๋งŒ, ๋ฌธ์ž์—ด๋กœ ๊ฐ„์ฃผํ•˜์—ฌ UTF-16๊ฐ’์œผ๋กœ ์ •๋ ฌ๋˜์–ด 3๋ฒˆ์งธ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋‹ค.
๋น„๊ตํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ˆซ์ž์˜ ์‹ค์ œ ํฌ๊ธฐ๋Œ€๋กœ ์ •๋ ฌํ–ˆ๋‹ค.

 

์›์†Œ๋“ค์„ string์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ํ•ด๋‹น ์‹œํ€ธ์Šค๋‚ด ๋‹จ์œ„์˜ UTF-16 ์ฝ”๋“œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ ์ •๋ ฌ ๋ฐฉ์‹์ด๋‹ค. ๋”ฐ๋ผ์„œ string์ด ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด์„ ๊ธฐ๋ณธ ์ •๋ ฌํ•˜๋ฉด ์‚ฌ์ „์‹์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.

 

 

๊ธฐ๋ณธ ์ •๋ ฌ ๋ฐฉ์‹ ์ด์™ธ์— ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ง์ ‘ ์ธ์ž์— ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•˜๋Š” ๋น„๊ตํ•จ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋ฉด๋œ๋‹ค.

 

  • (a, b) => -1: ๋น„๊ตํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ๊ฐ’์ด 0๋ณด๋‹ค ์ž‘์œผ๋ฉด a๊ฐ€ b๋ณด๋‹ค ๋จผ์ €์˜จ๋‹ค.
  • (a, b) => 1: ๋น„๊ตํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ๊ฐ’์ด 0๋ณด๋‹ค ํฌ๋ฉด b๊ฐ€ a๋ณด๋‹ค ๋จผ์ €์˜จ๋‹ค.
  • (a, b) => 0 : ๋น„๊ตํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ๊ฐ’์ด 0์ด๋ฉด a์™€ b์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ๋™์ž‘๋„ ์žˆ์ง€๋งŒ, ์ด ๋™์ž‘์€ ECMAscript ํ‘œ์ค€์—์„œ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

ํ•œ๊ฐœ ์ด์ƒ์˜ ์กฐ๊ฑด์„ ๊ฐ€์ง€๊ณ  ์ •๋ ฌ์„ ํ•ด์•ผํ•  ๋•Œ๋„ ์žˆ๋‹ค.

์˜ค๋Š˜ ํ‘ผ 1366Rank Teams by Votes ์—์„œ๋„ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ๊ฐ€์ง€๊ณ  ์ •๋ ฌ์„ ํ•ด์•ผํ–ˆ๋‹ค.

 

  1. ์ ์ˆ˜๋ฅผ ๋” ์ž˜ ๋ฐ›์€ ์›์†Œ๊ฐ€ ์•ž์— ์˜จ๋‹ค.
  2. ์ด๋Ÿฐ ์ ์ˆ˜๋Š” C๊ฐœ ์žˆ๋‹ค. 1๋ฒˆ ์ ์ˆ˜๊ฐ€ ๋™์ ์ด๋ฉด 2๋ฒˆ ์ ์ˆ˜๋ฅผ ํ†ตํ•ด ์ˆœ์„œ๋ฅผ ์ •ํ•œ๋‹ค.
  3. C๋ฒˆ ์ ์ˆ˜๊นŒ์ง€ ๋ชจ๋‘ ๋™์ ์ด๋ฉด ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•œ๋‹ค.

 

 

for๋ฌธ์„ ํ†ตํ•ด C๊ฐœ์˜ ์ ์ˆ˜๋ฅผ ๋น„๊ตํ•ด๋ณด๊ณ  ๋ชจ๋‘ ๋™์ ์ด๋ฉด, ๋ฐ˜๋ณต๋ฌธ์„ ๋น ์ ธ๋‚˜์™€ ์•ŒํŒŒ๋ฒณ ์‚ฌ์ „์‹์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ์—ฌ๊ธฐ์—์„œ a์™€ b๋Š” char ํƒ€์ž…์ด๋‹ค.

 

 

์•ŒํŒŒ๋ฒณ ์ˆœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ

  • (a, b) => a < b ? -1 : 1
  • JS๋Š” ๋น„๊ต์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์ „์ˆœ string ํฌ๊ธฐ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • a๊ฐ€ b๋ณด๋‹ค ์‚ฌ์ „์‹ ์ˆœ์„œ๊ฐ€ ์•ž์ชฝ์ด๋ฉด a๊ฐ€ ์•ž์œผ๋กœ ์˜ค๋„๋ก -1์„ ๋ฐ˜ํ™˜.
  • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด b๊ฐ€ ์•ž์œผ๋กœ์˜ค๋„๋ก 1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.