Logo
Hyunsu Blog
kakao-coding-test

๐Ÿ“†Published :Feb 3, 2024 โ€ข

๐Ÿ“†Updated :Feb 3, 2024 โ€ข

โ˜•๏ธ2min

์ •๋ ฌ

๋“ค์–ด๊ฐ€๋ฉฐ

  • ์ด๋ฒˆ ์ฃผ๋Š” ์ธํ„ฐ๋ทฐ ๊ณผ์ œ ๊ตฌํ˜„์„ ๊ฒธํ•˜๋Š๋ผ ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ํ’€์ง„ ๋ชปํ–ˆ๋‹ค. ๋ฐธ๋Ÿฐ์Šค๋ฅผ ์œ ์ง€ํ•˜๋Š”๊ฒŒ ์‰ฝ์ง„ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค.
  • ์„ค์—ฐํœด์— ์ •๋ ฌ ๋ถ€๋ถ„์„ ๋‹ค์‹œ ๋ด์•ผ๊ฒ ๋‹ค.

๋ฌธ์ œ ํ’€์ด๋กœ ๋ฐ”๋กœ ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค.

๋ฌธ์ž์—ด ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ ์ถœ์ฒ˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค๋ฐ”๋กœ๊ฐ€๊ธฐ

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

์ด ๋ฌธ์ œ๋Š” ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด ๋ฐฐ์—ด(strings)๊ณผ ์ •์ˆ˜(n)๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„, ๊ฐ ๋ฌธ์ž์—ด์„ ์ฃผ์–ด์ง„ n๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ ํ•œ๋‹ค.

๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ๊ฒฝ์šฐ ์œ ๋‹ˆ์ฝ”๋“œ(Unicode) ๊ฐ’์„ ์ž์ฃผ ์ด์šฉํ•˜๋Š” ํŽธ์ธ๋ฐ strings ๋ฐฐ์—ด์˜ ๊ฐ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด์„œ, n๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ์ถ”์ถœํ•˜๊ณ  ๊ทธ ๋ฌธ์ž์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ freq ๋ฐฐ์—ด์— ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•œ๋‹ค. n๋ฒˆ์งธ ๋ฌธ์ž์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ์—์„œ 97์„ ๋นผ์ฃผ๋Š” ์ด์œ ๋Š” ์†Œ๋ฌธ์ž 'a'์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๊ฐ€ 97์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ n๋ฒˆ์งธ ๋ฌธ์ž๊ฐ€ 'a'๋ผ๋ฉด 0๋ฒˆ ์ธ๋ฑ์Šค์—, 'b'๋ผ๋ฉด 1๋ฒˆ ์ธ๋ฑ์Šค์—, 'c'๋ผ๋ฉด 2๋ฒˆ ์ธ๋ฑ์Šค์— ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค.

์ด ๋ฌธ์ œ์—์„œ ์ฃผ์˜ ํ•  ์ ์€ n๋ฒˆ์งธ ๋ฌธ์ž๊ฐ€ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์ „์ˆœ์˜ ์ •๋ ฌ์ด ๋‹ค์‹œ ํ•„์š”ํ•˜๋‹ค. ์•„๋ž˜์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ "abce","adcd" ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” "abce"๊ฐ€ ๋จผ์ € ์ถœ๋ ฅ๋œ๋‹ค.

const assert = require('assert') function solution(strings, n) { //๊ฐ ๋ฌธ์ž์—ด์˜ ์ธ๋ฑ์Šค n๋ฒˆ์งธ ๊ธ€์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ var answer = [] const freq = Array.from({ length: 26 }, () => []) strings.map((s) => freq[s[n].charCodeAt() - 97].push(s)) freq.forEach((arr) => { if (!arr.length) return false arr.sort() answer.push(...arr) }) return answer } assert.deepEqual(solution(['sun', 'bed', 'car'], 1), ['car', 'bed', 'sun']) assert.deepEqual(solution(['abce', 'abcd', 'cdx'], 2), ['abcd', 'abce', 'cdx'])

์ •์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ ์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ•จ์ˆ˜ solution์€ ์ •์ˆ˜ n์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค. n์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ํฐ๊ฒƒ๋ถ€ํ„ฐ ์ž‘์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ์ƒˆ๋กœ์šด ์ •์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ์„ธ์š”. ์˜ˆ๋ฅผ๋“ค์–ด n์ด 118372๋ฉด 873211์„ ๋ฆฌํ„ดํ•˜๋ฉด ๋œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋‚ด์žฅํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์‚ฝ์ž…์ •๋ ฌ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ •์ˆ˜๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋‘๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.

JS ๋‚ด์žฅํ•จ์ˆ˜ ์ด์šฉ ์ •์ˆ˜ n์„ ๋ฐ›์•„์„œ ํ•ด๋‹น ์ •์ˆ˜์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„ ๋‹ค์‹œ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

function solution(n) { return parseInt( n .toString() .split('') .sort((a, b) => b - a) .join(''), ) }
  • ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, sort ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ์ •๋ ฌ ํ•จ์ˆ˜ (a, b) => b - a๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค..
  • ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ๋‹ค์‹œ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์น˜๊ณ , parseInt๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

insertion ํ•จ์ˆ˜ ์ ์šฉ

  • ์‚ฝ์ž… ์ •๋ ฌ์€ ์›์†Œ๊ฐ€ ์ •๋ ฌ๋œ ๋ถ€๋ถ„๊ณผ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ž‘๋™ํ•˜๋ฉฐ, ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์˜ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์™€์„œ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์— ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘
  • ์•„๋ž˜์™€ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ทธ ๋ฐฐ์—ด(in place)์—์„œ ๋ฐ”๋กœ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ์ธ๋ฑ์Šค 0๋ฒˆ๋ถ€ํ„ฐ ์ •๋ ฌํ•ด ๋‚˜๊ฐ„๋‹ค. insertion-sort ์ถœ์ฒ˜: wikipedia Insertion_sort๋™์ž‘ ๋ฐฉ์‹
  1. ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.
  2. ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์ด๋ฉฐ, ์ดˆ๊ธฐ์—๋Š” ์ฒซ ๋ฒˆ์งธ ์›์†Œ ํ•˜๋‚˜๋งŒ ํฌํ•จํ•œ๋‹ค.
  3. ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์ด๋ฉฐ, ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์›์†Œ๋“ค์„ ํฌํ•จํ•œ๋‹ค.
  4. ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์—์„œ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์„ ํƒํ•œ๋‹ค.
  5. ์„ ํƒํ•œ ์›์†Œ๋ฅผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์˜ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.
  6. ์‚ฝ์ž…ํ•  ์œ„์น˜๋Š” ์ •๋ ฌ๋œ ๋ถ€๋ถ„์—์„œ ์„ ํƒํ•œ ์›์†Œ๋ณด๋‹ค ์ž‘์€ ์›์†Œ๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฉˆ์ถ˜๋‹ค.
  7. ์„ ํƒํ•œ ์›์†Œ๋ณด๋‹ค ์ž‘์€ ์›์†Œ๋ฅผ ๋งŒ๋‚˜๋ฉด, ๊ทธ ์ž‘์€ ์›์†Œ ๋’ค์— ์„ ํƒํ•œ ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.
  8. ์ด ๊ณผ์ •์„ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์˜ ๋ชจ๋“  ์›์†Œ๊ฐ€ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์— ์‚ฝ์ž…๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

๋ชจ๋“  ์›์†Œ๊ฐ€ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์— ์‚ฝ์ž…๋˜๋ฉด ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ๋‹ค.

์‚ฝ์ž…์ •๋ ฌ์€ ์ •๋ ฌ ์ค‘์—์„œ๋„ ํšจ์œจ์„ฑ์€ ๋‚ฎ์€ ํŽธ์— ์†ํ•œ๋‹ค. ์ •๋ ฌ์ด ๊ฑฐ์˜ ๋˜์–ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n)์— ๊ฐ€๊นŒ์šฐ๋ฉฐ, ๊ฑฐ์˜ ์ •๋ ฌ์ด ์•ˆ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ตœ์•…์€ O(n^2) ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฆฌ์ŠคํŠธ๋‚˜ ๊ฑฐ์˜ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ์— ์ ํ•ฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

function insertionSort(n) { let arr = n.toString().split('') for (let i = 1; i < arr.length; i++) { for (let j = i; j > 0; j--) { if (arr[j] > arr[j - 1]) { ;[arr[j], arr[j - 1]] = [arr[j - 1], arr[j]] } } } return parseInt(arr.join('')) }

K๋ฒˆ์งธ ์ˆ˜

๊ฐ€์žฅ ํฐ ์ˆ˜

ํŠœํ”Œ

์ง€ํ˜•

Hi, I'm Hyunsu ๐Ÿ‘‹

Profile Image

์•ˆ๋…•ํ•˜์„ธ์š”. ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ฃผํ˜„์ˆ˜์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ํ’๋ถ€ํ•˜๊ณ  ๊ฐ€์น˜ ์žˆ๋Š” ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ์ผ์— ๋ฟŒ๋“ฏํ•จ์„ ๋Š๋‚๋‹ˆ๋‹ค.

์˜ต์‹œ๋””์–ธ(Obsidian)์—์„œ ํ˜„์žฌ ๋ธ”๋กœ๊ทธ๋กœ ํ•˜๋‚˜์”ฉ ๊ธ€์„ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์— ์žˆ์–ด์š”. โ˜•๏ธ ๐Ÿ‘ฉโ€๐Ÿ’ป โ›ท

Github on ViewReach Me Out