๐ŸŒ  ๋ฌธ์ œ

๋„ค์˜ค๋Š” ํ‰์†Œ ํ”„๋กœ๋„๊ฐ€ ๋น„์ƒ๊ธˆ์„ ์ˆจ๊ฒจ๋†“๋Š” ์žฅ์†Œ๋ฅผ ์•Œ๋ ค์ค„ ๋น„๋ฐ€์ง€๋„๋ฅผ ์†์— ๋„ฃ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋น„๋ฐ€์ง€๋„๋Š” ์ˆซ์ž๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์–ด ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•ด์•ผ ํ•œ๋‹ค. ๋‹คํ–‰ํžˆ ์ง€๋„ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•  ๋ฐฉ๋ฒ•์„ ์ ์–ด๋†“์€ ๋ฉ”๋ชจ๋„ ํ•จ๊ป˜ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.


์ง€๋„๋Š” ํ•œ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ n์ธ ์ •์‚ฌ๊ฐํ˜• ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ, ๊ฐ ์นธ์€ "๊ณต๋ฐฑ"(" ") ๋˜๋Š” "๋ฒฝ"("#") ๋‘ ์ข…๋ฅ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
์ „์ฒด ์ง€๋„๋Š” ๋‘ ์žฅ์˜ ์ง€๋„๋ฅผ ๊ฒน์ณ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ "์ง€๋„ 1"๊ณผ "์ง€๋„ 2"๋ผ๊ณ  ํ•˜์ž. ์ง€๋„ 1 ๋˜๋Š” ์ง€๋„ 2 ์ค‘ ์–ด๋Š ํ•˜๋‚˜๋ผ๋„ ๋ฒฝ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๋ฒฝ์ด๋‹ค. ์ง€๋„ 1๊ณผ ์ง€๋„ 2์—์„œ ๋ชจ๋‘ ๊ณต๋ฐฑ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๊ณต๋ฐฑ์ด๋‹ค.


"์ง€๋„ 1"๊ณผ "์ง€๋„ 2"๋Š” ๊ฐ๊ฐ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ๋‹ค.
์•”ํ˜ธํ™”๋œ ๋ฐฐ์—ด์€ ์ง€๋„์˜ ๊ฐ ๊ฐ€๋กœ์ค„์—์„œ ๋ฒฝ ๋ถ€๋ถ„์„ 1, ๊ณต๋ฐฑ ๋ถ€๋ถ„์„ 0์œผ๋กœ ๋ถ€ํ˜ธํ™”ํ–ˆ์„ ๋•Œ ์–ป์–ด์ง€๋Š” ์ด์ง„์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์˜ ๋ฐฐ์—ด์ด๋‹ค.


๋„ค์˜ค๊ฐ€ ํ”„๋กœ๋„์˜ ๋น„์ƒ๊ธˆ์„ ์†์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก, ๋น„๋ฐ€์ง€๋„์˜ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•˜๋Š” ์ž‘์—…์„ ๋„์™€์ค„ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ.

๐ŸŒ  ์ž…๋ ฅํ˜•์‹

  • ์ž…๋ ฅ์œผ๋กœ ์ง€๋„์˜ ํ•œ ๋ณ€ ํฌ๊ธฐ n ๊ณผ 2๊ฐœ์˜ ์ •์ˆ˜ ๋ฐฐ์—ด arr1, arr2๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.
  • 1 โ‰ฆ n โ‰ฆ 16
  • arr1, arr2๋Š” ๊ธธ์ด n์ธ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง„๋‹ค.
  • ์ •์ˆ˜ ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ x๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ์˜ ๊ธธ์ด๋Š” n ์ดํ•˜์ด๋‹ค. ์ฆ‰, 0 โ‰ฆ x โ‰ฆ 2n - 1์„ ๋งŒ์กฑํ•œ๋‹ค.

๐ŸŒ  ์ถœ๋ ฅํ˜•์‹

  • ์›๋ž˜์˜ ๋น„๋ฐ€์ง€๋„๋ฅผ ํ•ด๋…ํ•˜์—ฌ '#', ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ์ถœ๋ ฅํ•˜๋ผ.

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’
n 5
arr1 [9, 20, 28, 18, 11]
arr2 [30, 1, 21, 17, 28]
์ถœ๋ ฅ ["#####","# # #", "### #", "# ##", "#####"]


๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’
n 6
arr1 [46, 33, 33 ,22, 31, 50]
arr2 [27 ,56, 19, 14, 14, 10]
์ถœ๋ ฅ ["######", "### #", "## ##", " #### ", " #####", "### # "]


 

๐Ÿงž ํ’€์ด

function solution(n, arr1, arr2) {
    let answer = [];
    let changedAnswer = [];
    
    arr1.forEach(el => {
        let temp = el.toString(2).split("").map(Number);
        while (temp.length !== n) {
            temp.unshift(0);
        }
        answer.push(temp);
    })
    
    arr2.forEach((el2, i) => {
        let temp2 = el2.toString(2).split("").map(Number);
        while (temp2.length !== n) {
            temp2.unshift(0);
        }
        temp2.forEach((e, j) => {
            if (e !== 0) {
                answer[i][j] = 1;
            }
        })
    })
    
    answer.forEach((row) => {
        changedAnswer.push(row.map((e) => e == 1 ? "#" : " ").join(""));
    })
    
    return changedAnswer;
}

๐Ÿ’ก ์•Œ๊ฒŒ ๋œ ์ 

  • toString(n)์„ ํ†ตํ•ด, ์ •์ˆ˜ํ˜•์„ n์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • unshift()๋ฅผ ํ†ตํ•ด, ๋ฐฐ์—ด ์•ž ์ž๋ฆฌ์— ํ ๋งˆ๋ƒฅ ์›ํ•˜๋Š” ์š”์†Œ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
  • map()์„ ํ†ตํ•ด, ๊ฐ ์š”์†Œ๋“ค์„ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์‰ฝ๊ฒŒ ๋ณ€ํ˜•ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐ŸŒ  ๋ฌธ์ œ

์‹ ์ž…์‚ฌ์› ๋ฌด์ง€๋Š” ๊ฒŒ์‹œํŒ ๋ถˆ๋Ÿ‰ ์ด์šฉ์ž๋ฅผ ์‹ ๊ณ ํ•˜๊ณ  ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”์ผ๋กœ ๋ฐœ์†กํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์ง€๊ฐ€ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ์‹œ์Šคํ…œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ ์œ ์ €๋Š” ํ•œ ๋ฒˆ์— ํ•œ ๋ช…์˜ ์œ ์ €๋ฅผ ์‹ ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‹ ๊ณ  ํšŸ์ˆ˜์— ์ œํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์œ ์ €๋ฅผ ๊ณ„์†ํ•ด์„œ ์‹ ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•œ ์œ ์ €๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹ ๊ณ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋™์ผํ•œ ์œ ์ €์— ๋Œ€ํ•œ ์‹ ๊ณ  ํšŸ์ˆ˜๋Š” 1ํšŒ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
k๋ฒˆ ์ด์ƒ ์‹ ๊ณ ๋œ ์œ ์ €๋Š” ๊ฒŒ์‹œํŒ ์ด์šฉ์ด ์ •์ง€๋˜๋ฉฐ, ํ•ด๋‹น ์œ ์ €๋ฅผ ์‹ ๊ณ ํ•œ ๋ชจ๋“  ์œ ์ €์—๊ฒŒ ์ •์ง€ ์‚ฌ์‹ค์„ ๋ฉ”์ผ๋กœ ๋ฐœ์†กํ•ฉ๋‹ˆ๋‹ค.
์œ ์ €๊ฐ€ ์‹ ๊ณ ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์„ ์ทจํ•ฉํ•˜์—ฌ ๋งˆ์ง€๋ง‰์— ํ•œ๊บผ๋ฒˆ์— ๊ฒŒ์‹œํŒ ์ด์šฉ ์ •์ง€๋ฅผ ์‹œํ‚ค๋ฉด์„œ ์ •์ง€ ๋ฉ”์ผ์„ ๋ฐœ์†กํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ์€ ์ „์ฒด ์œ ์ € ๋ชฉ๋ก์ด ["muzi", "frodo", "apeach", "neo"]์ด๊ณ , k = 2(์ฆ‰, 2๋ฒˆ ์ด์ƒ ์‹ ๊ณ ๋‹นํ•˜๋ฉด ์ด์šฉ ์ •์ง€)์ธ ๊ฒฝ์šฐ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

์œ ์ € ID ์œ ์ €๊ฐ€ ์‹ ๊ณ ํ•œ ID ์„ค๋ช…
"muzi" "frodo" "muzi"๊ฐ€ "frodo"๋ฅผ ์‹ ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.
"apeach" "frodo" "apeach"๊ฐ€ "frodo"๋ฅผ ์‹ ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.
"frodo" "neo" "frodo"๊ฐ€ "neo"๋ฅผ ์‹ ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.
"muzi" "neo" "muzi"๊ฐ€ "neo"๋ฅผ ์‹ ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.
"apeach" "muzi" "apeach"๊ฐ€ "muzi"๋ฅผ ์‹ ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ฐ ์œ ์ €๋ณ„๋กœ ์‹ ๊ณ ๋‹นํ•œ ํšŸ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์œ ์ € ID ์‹ ๊ณ ๋‹นํ•œ ํšŸ์ˆ˜
"muzi" 1
"frodo" 2
"apeach" 0
"neo" 2
์œ„ ์˜ˆ์‹œ์—์„œ๋Š” 2๋ฒˆ ์ด์ƒ ์‹ ๊ณ ๋‹นํ•œ "frodo"์™€ "neo"์˜ ๊ฒŒ์‹œํŒ ์ด์šฉ์ด ์ •์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ๊ฐ ์œ ์ €๋ณ„๋กœ ์‹ ๊ณ ํ•œ ์•„์ด๋””์™€ ์ •์ง€๋œ ์•„์ด๋””๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์œ ์ € ID ์œ ์ €๊ฐ€ ์‹ ๊ณ ํ•œ ID ์ •์ง€๋œ ID
"muzi" ["frodo", "neo"] ["frodo", "neo"]
"frodo" ["neo"] ["neo"]
"apeach" ["muzi", "frodo"] ["frodo"]
"neo" ์—†์Œ ์—†์Œ
๋”ฐ๋ผ์„œ "muzi"๋Š” ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ”์ผ์„ 2ํšŒ, "frodo"์™€ "apeach"๋Š” ๊ฐ๊ฐ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ”์ผ์„ 1ํšŒ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด์šฉ์ž์˜ ID๊ฐ€ ๋‹ด๊ธด ๋ฌธ์ž์—ด ๋ฐฐ์—ด id_list, ๊ฐ ์ด์šฉ์ž๊ฐ€ ์‹ ๊ณ ํ•œ ์ด์šฉ์ž์˜ ID ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ๋ฌธ์ž์—ด ๋ฐฐ์—ด report, ์ •์ง€ ๊ธฐ์ค€์ด ๋˜๋Š” ์‹ ๊ณ  ํšŸ์ˆ˜ k๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ ์œ ์ €๋ณ„๋กœ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ”์ผ์„ ๋ฐ›์€ ํšŸ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐ŸŒ  ์ œํ•œ์‚ฌํ•ญ

  • 2 ≤ id_list์˜ ๊ธธ์ด ≤ 1,000
  • 1 ≤ id_list์˜ ์›์†Œ ๊ธธ์ด ≤ 10
  • id_list์˜ ์›์†Œ๋Š” ์ด์šฉ์ž์˜ id๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์ด๋ฉฐ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • id_list์—๋Š” ๊ฐ™์€ ์•„์ด๋””๊ฐ€ ์ค‘๋ณตํ•ด์„œ ๋“ค์–ด์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 1 ≤ report์˜ ๊ธธ์ด ≤ 200,000
  • 3 ≤ report์˜ ์›์†Œ ๊ธธ์ด ≤ 21
  • report์˜ ์›์†Œ๋Š” "์ด์šฉ์žid ์‹ ๊ณ ํ•œid"ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด "muzi frodo"์˜ ๊ฒฝ์šฐ "muzi"๊ฐ€ "frodo"๋ฅผ ์‹ ๊ณ ํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
  • id๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์šฉ์žid์™€ ์‹ ๊ณ ํ•œid๋Š” ๊ณต๋ฐฑ(์ŠคํŽ˜์ด์Šค)ํ•˜๋‚˜๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž๊ธฐ ์ž์‹ ์„ ์‹ ๊ณ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • 1 ≤ k ≤ 200, k๋Š” ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • return ํ•˜๋Š” ๋ฐฐ์—ด์€ id_list์— ๋‹ด๊ธด id ์ˆœ์„œ๋Œ€๋กœ ๊ฐ ์œ ์ €๊ฐ€ ๋ฐ›์€ ๊ฒฐ๊ณผ ๋ฉ”์ผ ์ˆ˜๋ฅผ ๋‹ด์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ

id_list report k result
["muzi", "frodo", "apeach", "neo"] ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"] 2 [2,1,1,0]
["con", "ryan"] ["ryan con", "ryan con", "ryan con", "ryan con"] 3 [0,0]

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2
"ryan"์ด "con"์„ 4๋ฒˆ ์‹ ๊ณ ํ–ˆ์œผ๋‚˜, ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋”ฐ๋ผ ํ•œ ์œ ์ €๊ฐ€ ๊ฐ™์€ ์œ ์ €๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹ ๊ณ ํ•œ ๊ฒฝ์šฐ๋Š” ์‹ ๊ณ  ํšŸ์ˆ˜ 1ํšŒ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "con"์€ 1ํšŒ ์‹ ๊ณ ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค. 3๋ฒˆ ์ด์ƒ ์‹ ๊ณ ๋‹นํ•œ ์ด์šฉ์ž๋Š” ์—†์œผ๋ฉฐ, "con"๊ณผ "ryan"์€ ๊ฒฐ๊ณผ ๋ฉ”์ผ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [0, 0]์„ return ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿงž ํ’€์ด

/*
[0, 1, 0, 1]
[0, 0, 0, 1]
[1, 1, 0, 0]
[0, 0, 0, 0]
*/

function solution(id_list, report, k) {
    let id_object = {}
    let counts = new Array(id_list.length).fill().map(() => new Array(id_list.length).fill(0));
    let reported = [];
    let answer = [];
    
    id_list.forEach((el, i) => {
        id_object[el] = i;
    })
    
    report.forEach((el) => {
        let temp = el.split(" ");
        if ( counts[id_object[temp[0]]][id_object[temp[1]]] == 0) {
            counts[id_object[temp[0]]][id_object[temp[1]]] += 1;            
        }
    })
    
    for (let i = 0; i < id_list.length; i++) {
        let temp_val = 0;
        for (let j = 0; j < id_list.length; j++) {
            temp_val += counts[j][i];
        }
        if (temp_val >= k) {
            reported.push(i);
        }
    }
    
    for (let k = 0; k < id_list.length; k++) {
        let temp_answer = 0;
        reported.forEach((e) => {
            if (counts[k][e] == 1) {
                temp_answer += 1;
            }
        })
        answer.push(temp_answer);
    }
    
    return answer;
}

๐Ÿ’ก ์•Œ๊ฒŒ ๋œ ์ 

  • ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ๋•Œ, Set์„ ํ™œ์šฉํ•ด์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ๊ฒƒ์„ ๋งŽ์ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ๋ณธ์ธ์€ 0์ผ ๋•Œ๋ผ๋Š” ์กฐ๊ฑด์„ ๋‹ฌ์•„, ์ตœ์ดˆ ์‹ ๊ณ ๋งŒ ์ ‘์ˆ˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.
  • reported ๋ฐฐ์—ด์— ์‹ ๊ณ ๋œ ์‚ฌ๋žŒ๋“ค์˜ ์ธ๋ฑ์Šค๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๊ณ ,
  • answer ๋ฐฐ์—ด์— ๋ฉ”์ผ์„ ๋ฐ›์„ ์‚ฌ๋žŒ๋“ค์˜ ์ธ๋ฑ์Šค์— ๋งž๊ฒŒ ํšŸ์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค. 

๐ŸŒ  ๋ฌธ์ œ

๊ฒŒ์ž„๊ฐœ๋ฐœ์ž์ธ "์ฃ ๋ฅด๋””"๋Š” ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ธฐ๊ณ„๋ฅผ ๋ชจ๋ฐ”์ผ ๊ฒŒ์ž„์œผ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
"์ฃ ๋ฅด๋””"๋Š” ๊ฒŒ์ž„์˜ ์žฌ๋ฏธ๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ํ™”๋ฉด ๊ตฌ์„ฑ๊ณผ ๊ทœ์น™์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒŒ์ž„ ๋กœ์ง์— ๋ฐ˜์˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 



๊ฒŒ์ž„ ํ™”๋ฉด์€ "1 x 1" ํฌ๊ธฐ์˜ ์นธ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ "N x N" ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐ ๊ฒฉ์ž์ด๋ฉฐ ์œ„์ชฝ์—๋Š” ํฌ๋ ˆ์ธ์ด ์žˆ๊ณ  ์˜ค๋ฅธ์ชฝ์—๋Š” ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (์œ„ ๊ทธ๋ฆผ์€ "5 x 5" ํฌ๊ธฐ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค). ๊ฐ ๊ฒฉ์ž ์นธ์—๋Š” ๋‹ค์–‘ํ•œ ์ธํ˜•์ด ๋“ค์–ด ์žˆ์œผ๋ฉฐ ์ธํ˜•์ด ์—†๋Š” ์นธ์€ ๋นˆ์นธ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ธํ˜•์€ "1 x 1" ํฌ๊ธฐ์˜ ๊ฒฉ์ž ํ•œ ์นธ์„ ์ฐจ์ง€ํ•˜๋ฉฐ ๊ฒฉ์ž์˜ ๊ฐ€์žฅ ์•„๋ž˜ ์นธ๋ถ€ํ„ฐ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์‚ฌ์šฉ์ž๋Š” ํฌ๋ ˆ์ธ์„ ์ขŒ์šฐ๋กœ ์›€์ง์—ฌ์„œ ๋ฉˆ์ถ˜ ์œ„์น˜์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ธํ˜•์„ ์ง‘์–ด ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง‘์–ด ์˜ฌ๋ฆฐ ์ธํ˜•์€ ๋ฐ”๊ตฌ๋‹ˆ์— ์Œ“์ด๊ฒŒ ๋˜๋Š” ๋ฐ, ์ด๋•Œ ๋ฐ”๊ตฌ๋‹ˆ์˜ ๊ฐ€์žฅ ์•„๋ž˜ ์นธ๋ถ€ํ„ฐ ์ธํ˜•์ด ์ˆœ์„œ๋Œ€๋กœ ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ์€ [1๋ฒˆ, 5๋ฒˆ, 3๋ฒˆ] ์œ„์น˜์—์„œ ์ˆœ์„œ๋Œ€๋กœ ์ธํ˜•์„ ์ง‘์–ด ์˜ฌ๋ ค ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด์€ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

 



๋งŒ์•ฝ ๊ฐ™์€ ๋ชจ์–‘์˜ ์ธํ˜• ๋‘ ๊ฐœ๊ฐ€ ๋ฐ”๊ตฌ๋‹ˆ์— ์—ฐ์†ํ•ด์„œ ์Œ“์ด๊ฒŒ ๋˜๋ฉด ๋‘ ์ธํ˜•์€ ํ„ฐ๋œจ๋ ค์ง€๋ฉด์„œ ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์œ„ ์ƒํƒœ์—์„œ ์ด์–ด์„œ [5๋ฒˆ] ์œ„์น˜์—์„œ ์ธํ˜•์„ ์ง‘์–ด ๋ฐ”๊ตฌ๋‹ˆ์— ์Œ“์œผ๋ฉด ๊ฐ™์€ ๋ชจ์–‘ ์ธํ˜• ๋‘ ๊ฐœ๊ฐ€ ์—†์–ด์ง‘๋‹ˆ๋‹ค.

 

 

ํฌ๋ ˆ์ธ ์ž‘๋™ ์‹œ ์ธํ˜•์ด ์ง‘์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” ์—†์œผ๋‚˜ ๋งŒ์•ฝ ์ธํ˜•์ด ์—†๋Š” ๊ณณ์—์„œ ํฌ๋ ˆ์ธ์„ ์ž‘๋™์‹œํ‚ค๋Š” ๊ฒฝ์šฐ์—๋Š” ์•„๋ฌด๋Ÿฐ ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ”๊ตฌ๋‹ˆ๋Š” ๋ชจ๋“  ์ธํ˜•์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ํฌ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆผ์—์„œ๋Š” ํ™”๋ฉดํ‘œ์‹œ ์ œ์•ฝ์œผ๋กœ 5์นธ๋งŒ์œผ๋กœ ํ‘œํ˜„ํ•˜์˜€์Œ)

๊ฒŒ์ž„ ํ™”๋ฉด์˜ ๊ฒฉ์ž์˜ ์ƒํƒœ๊ฐ€ ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด board์™€ ์ธํ˜•์„ ์ง‘๊ธฐ ์œ„ํ•ด ํฌ๋ ˆ์ธ์„ ์ž‘๋™์‹œํ‚จ ์œ„์น˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด moves๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ํฌ๋ ˆ์ธ์„ ๋ชจ๋‘ ์ž‘๋™์‹œํ‚จ ํ›„ ํ„ฐํŠธ๋ ค์ ธ ์‚ฌ๋ผ์ง„ ์ธํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐ŸŒ  ์ œํ•œ์‚ฌํ•ญ

  • board ๋ฐฐ์—ด์€ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ํฌ๊ธฐ๋Š” "5 x 5" ์ด์ƒ "30 x 30" ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • board์˜ ๊ฐ ์นธ์—๋Š” 0 ์ด์ƒ 100 ์ดํ•˜์ธ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค.
  • 0์€ ๋นˆ ์นธ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • 1 ~ 100์˜ ๊ฐ ์ˆซ์ž๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ธํ˜•์˜ ๋ชจ์–‘์„ ์˜๋ฏธํ•˜๋ฉฐ ๊ฐ™์€ ์ˆซ์ž๋Š” ๊ฐ™์€ ๋ชจ์–‘์˜ ์ธํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • moves ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • moves ๋ฐฐ์—ด ๊ฐ ์›์†Œ๋“ค์˜ ๊ฐ’์€ 1 ์ด์ƒ์ด๋ฉฐ board ๋ฐฐ์—ด์˜ ๊ฐ€๋กœ ํฌ๊ธฐ ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ

board moves result
[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ธํ˜•์˜ ์ฒ˜์Œ ์ƒํƒœ๋Š” ๋ฌธ์ œ์— ์ฃผ์–ด์ง„ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํฌ๋ ˆ์ธ์ด [1, 5, 3, 5, 1, 2, 1, 4] ๋ฒˆ ์œ„์น˜์—์„œ ์ฐจ๋ก€๋Œ€๋กœ ์ธํ˜•์„ ์ง‘์–ด์„œ ๋ฐ”๊ตฌ๋‹ˆ์— ์˜ฎ๊ฒจ ๋‹ด์€ ํ›„, ์ƒํƒœ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์œผ๋ฉฐ ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๋Š” ๊ณผ์ •์—์„œ ํ„ฐํŠธ๋ ค์ ธ ์‚ฌ๋ผ์ง„ ์ธํ˜•์€ 4๊ฐœ ์ž…๋‹ˆ๋‹ค.

 


๐Ÿงž ํ’€์ด

function solution(board, moves) {
    let basket = [];
    let answer = 0;
    
    moves.forEach((el) => {
        for (let i = 0; i < board.length; i++) {
            if (board[i][el-1] != 0) {
                if (basket[basket.length-1] == board[i][el-1]) {
                    basket.pop();
                    console.log(basket);
                    console.log(board[i][el-1])
                    answer += 2;
                } else {
                    basket.push(board[i][el-1]);                    
                }
                board[i][el-1] = 0;
                break;
            }
        }
    })
    
    return answer;
}

๐Ÿ’ก ์•Œ๊ฒŒ ๋œ ์ 

  • JavaScript์˜ ๊ฒฝ์šฐ, ๋ฐฐ์—ด์˜ push์™€ pop์„ ํ™œ์šฉํ•˜์—ฌ, stack์ฒ˜๋Ÿผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•ญ์ƒ ๊ตฌํ˜„์—๋Š” ์กฐ๊ฑด์„ ์ž˜ ๊ณ ๋ฏผํ•˜๊ณ , console.log()๋ฅผ ํ†ตํ•ด ๋””๋ฒ„๊น…ํ•˜์ž.

๐ŸŒ  ๋ฌธ์ œ

์„ ๋ฌผ์„ ์ง์ ‘ ์ „ํ•˜๊ธฐ ํž˜๋“ค ๋•Œ ์นด์นด์˜คํ†ก ์„ ๋ฌผํ•˜๊ธฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ์ถ•ํ•˜ ์„ ๋ฌผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์นœ๊ตฌ๋“ค์ด ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์Œ ๋‹ฌ์— ๋ˆ„๊ฐ€ ์„ ๋ฌผ์„ ๋งŽ์ด ๋ฐ›์„์ง€ ์˜ˆ์ธกํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ์‚ฌ๋žŒ์ด ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์ด ์žˆ๋‹ค๋ฉด, ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ๋‘ ์‚ฌ๋žŒ ์‚ฌ์ด์— ๋” ๋งŽ์€ ์„ ๋ฌผ์„ ์ค€ ์‚ฌ๋žŒ์ด ๋‹ค์Œ ๋‹ฌ์— ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด A๊ฐ€ B์—๊ฒŒ ์„ ๋ฌผ์„ 5๋ฒˆ ์คฌ๊ณ , B๊ฐ€ A์—๊ฒŒ ์„ ๋ฌผ์„ 3๋ฒˆ ์คฌ๋‹ค๋ฉด ๋‹ค์Œ ๋‹ฌ์—” A๊ฐ€ B์—๊ฒŒ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
๋‘ ์‚ฌ๋žŒ์ด ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์ด ํ•˜๋‚˜๋„ ์—†๊ฑฐ๋‚˜ ์ฃผ๊ณ ๋ฐ›์€ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด, ์„ ๋ฌผ ์ง€์ˆ˜๊ฐ€ ๋” ํฐ ์‚ฌ๋žŒ์ด ์„ ๋ฌผ ์ง€์ˆ˜๊ฐ€ ๋” ์ž‘์€ ์‚ฌ๋žŒ์—๊ฒŒ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
์„ ๋ฌผ ์ง€์ˆ˜๋Š” ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ์ž์‹ ์ด ์นœ๊ตฌ๋“ค์—๊ฒŒ ์ค€ ์„ ๋ฌผ์˜ ์ˆ˜์—์„œ ๋ฐ›์€ ์„ ๋ฌผ์˜ ์ˆ˜๋ฅผ ๋บ€ ๊ฐ’์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด A๊ฐ€ ์นœ๊ตฌ๋“ค์—๊ฒŒ ์ค€ ์„ ๋ฌผ์ด 3๊ฐœ๊ณ  ๋ฐ›์€ ์„ ๋ฌผ์ด 10๊ฐœ๋ผ๋ฉด A์˜ ์„ ๋ฌผ ์ง€์ˆ˜๋Š” -7์ž…๋‹ˆ๋‹ค. B๊ฐ€ ์นœ๊ตฌ๋“ค์—๊ฒŒ ์ค€ ์„ ๋ฌผ์ด 3๊ฐœ๊ณ  ๋ฐ›์€ ์„ ๋ฌผ์ด 2๊ฐœ๋ผ๋ฉด B์˜ ์„ ๋ฌผ ์ง€์ˆ˜๋Š” 1์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ A์™€ B๊ฐ€ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ์ ์ด ์—†๊ฑฐ๋‚˜ ์ •ํ™•ํžˆ ๊ฐ™์€ ์ˆ˜๋กœ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์•˜๋‹ค๋ฉด, ๋‹ค์Œ ๋‹ฌ์—” B๊ฐ€ A์—๊ฒŒ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
๋งŒ์•ฝ ๋‘ ์‚ฌ๋žŒ์˜ ์„ ๋ฌผ ์ง€์ˆ˜๋„ ๊ฐ™๋‹ค๋ฉด ๋‹ค์Œ ๋‹ฌ์— ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ทœ์น™๋Œ€๋กœ ๋‹ค์Œ ๋‹ฌ์— ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ, ๋‹น์‹ ์€ ์„ ๋ฌผ์„ ๊ฐ€์žฅ ๋งŽ์ด ๋ฐ›์„ ์นœ๊ตฌ๊ฐ€ ๋ฐ›์„ ์„ ๋ฌผ์˜ ์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์นœ๊ตฌ๋“ค์˜ ์ด๋ฆ„์„ ๋‹ด์€ 1์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด friends ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ์นœ๊ตฌ๋“ค์ด ์ฃผ๊ณ ๋ฐ›์€ ์„ ๋ฌผ ๊ธฐ๋ก์„ ๋‹ด์€ 1์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด gifts๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ, ๋‹ค์Œ๋‹ฌ์— ๊ฐ€์žฅ ๋งŽ์€ ์„ ๋ฌผ์„ ๋ฐ›๋Š” ์นœ๊ตฌ๊ฐ€ ๋ฐ›์„ ์„ ๋ฌผ์˜ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

๐ŸŒ  ์ œํ•œ์‚ฌํ•ญ

  • 2 ≤ friends์˜ ๊ธธ์ด = ์นœ๊ตฌ๋“ค์˜ ์ˆ˜ ≤ 50
  • friends์˜ ์›์†Œ๋Š” ์นœ๊ตฌ์˜ ์ด๋ฆ„์„ ์˜๋ฏธํ•˜๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๊ธธ์ด๊ฐ€ 10 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ์ด๋ฆ„์ด ๊ฐ™์€ ์นœ๊ตฌ๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • 1 ≤ gifts์˜ ๊ธธ์ด ≤ 10,000
  • gifts์˜ ์›์†Œ๋Š” "A B"ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • A๋Š” ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์˜ ์ด๋ฆ„์„ B๋Š” ์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ์˜ ์ด๋ฆ„์„ ์˜๋ฏธํ•˜๋ฉฐ ๊ณต๋ฐฑ ํ•˜๋‚˜๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.
  • A์™€ B๋Š” friends์˜ ์›์†Œ์ด๋ฉฐ A์™€ B๊ฐ€ ๊ฐ™์€ ์ด๋ฆ„์ธ ๊ฒฝ์šฐ๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ

friends gifts result
["muzi", "ryan", "frodo", "neo"] ["muzi frodo", "muzi frodo", "ryan muzi", "ryan muzi", "ryan muzi", "frodo muzi", "frodo ryan", "neo muzi"] 2
["joy", "brad", "alessandro", "conan", "david"] ["alessandro brad", "alessandro joy", "alessandro conan", "david alessandro", "alessandro david"] 4
["a", "b", "c"] ["a b", "b a", "c a", "a c", "a c", "c a"] 0

 

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

์ฃผ๊ณ ๋ฐ›์€ ์„ ๋ฌผ๊ณผ ์„ ๋ฌผ ์ง€์ˆ˜๋ฅผ ํ‘œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

↓์ค€ ์‚ฌ๋žŒ \ ๋ฐ›์€ ์‚ฌ๋žŒ→ muzi ryan frodo neo
muzi - 0 2 0
ryan 3 - 0 0
frodo 1 1 - 0
neo 1 0 0 -
์ด๋ฆ„ ์ค€ ์„ ๋ฌผ ๋ฐ›์€ ์„ ๋ฌผ ์„ ๋ฌผ ์ง€์ˆ˜
muzi 2 5 -3
ryan 3 1 2
frodo 2 2 0
neo 1 0 1
muzi๋Š” ์„ ๋ฌผ์„ ๋” ๋งŽ์ด ์คฌ๋˜ frodo์—๊ฒŒ์„œ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
ryan์€ ์„ ๋ฌผ์„ ๋” ๋งŽ์ด ์คฌ๋˜ muzi์—๊ฒŒ์„œ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›๊ณ , ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์ง€ ์•Š์•˜๋˜ neo๋ณด๋‹ค ์„ ๋ฌผ ์ง€์ˆ˜๊ฐ€ ์ปค ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
frodo๋Š” ์„ ๋ฌผ์„ ๋” ๋งŽ์ด ์คฌ๋˜ ryan์—๊ฒŒ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
neo๋Š” ์„ ๋ฌผ์„ ๋” ๋งŽ์ด ์คฌ๋˜ muzi์—๊ฒŒ์„œ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›๊ณ , ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์ง€ ์•Š์•˜๋˜ frodo๋ณด๋‹ค ์„ ๋ฌผ ์ง€์ˆ˜๊ฐ€ ์ปค ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๋‹ฌ์— ๊ฐ€์žฅ ์„ ๋ฌผ์„ ๋งŽ์ด ๋ฐ›๋Š” ์‚ฌ๋žŒ์€ ryan๊ณผ neo์ด๊ณ  2๊ฐœ์˜ ์„ ๋ฌผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ฃผ๊ณ ๋ฐ›์€ ์„ ๋ฌผ๊ณผ ์„ ๋ฌผ ์ง€์ˆ˜๋ฅผ ํ‘œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

↓์ค€ ์‚ฌ๋žŒ \ ๋ฐ›์€ ์‚ฌ๋žŒ→ joy brad alessandro conan david
joy - 0 0 0 0
brad 0 - 0 0 0
alessandro 1 1 - 1 1
conan 0 0 0 - 0
david 0 0 1 0 -
์ด๋ฆ„ ์ค€ ์„ ๋ฌผ ๋ฐ›์€ ์„ ๋ฌผ ์„ ๋ฌผ ์ง€์ˆ˜
joy 0 1 -1
brad 0 1 -1
alessandro 4 1 3
conan 0 1 -1
david 1 1 0
alessandro๊ฐ€ ์„ ๋ฌผ์„ ๋” ๋งŽ์ด ์คฌ๋˜ joy, brad, conan์—๊ฒŒ์„œ ์„ ๋ฌผ์„ 3๊ฐœ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์„ ๋ฌผ์„ ํ•˜๋‚˜์”ฉ ์ฃผ๊ณ ๋ฐ›์€ david๋ณด๋‹ค ์„ ๋ฌผ ์ง€์ˆ˜๊ฐ€ ์ปค ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
david๋Š” ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์ง€ ์•Š์•˜๋˜ joy, brad, conan๋ณด๋‹ค ์„ ๋ฌผ ์ง€์ˆ˜๊ฐ€ ์ปค ๋‹ค์Œ ๋‹ฌ์— ์„ ๋ฌผ์„ 3๊ฐœ ๋ฐ›์Šต๋‹ˆ๋‹ค.
joy, brad, conan์€ ์„ ๋ฌผ์„ ๋ฐ›์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๋‹ฌ์— ๊ฐ€์žฅ ์„ ๋ฌผ์„ ๋งŽ์ด ๋ฐ›๋Š” ์‚ฌ๋žŒ์€ alessandro์ด๊ณ  4๊ฐœ์˜ ์„ ๋ฌผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 4๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

a์™€ b, a์™€ c, b์™€ c ์‚ฌ์ด์— ์„œ๋กœ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ์ˆ˜๋„ ๊ฐ™๊ณ  ์„ธ ์‚ฌ๋žŒ์˜ ์„ ๋ฌผ ์ง€์ˆ˜๋„ 0์œผ๋กœ ๊ฐ™์•„ ๋‹ค์Œ ๋‹ฌ์—” ์•„๋ฌด๋„ ์„ ๋ฌผ์„ ๋ฐ›์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 0์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿงž ํ’€์ด

function solution(friends, gifts) {
    // ์ด๋ฆ„ ๊ด€๋ จ ์ธ๋ฑ์Šค
    let FI = {};
    // ์„ ๋ฌผ ์ง€์ˆ˜
    let GI = new Array(friends.length).fill(0);
    // ์„ ๋ฌผ ๊ตํ™˜ 2์ฐจ์› ๋ฐฐ์—ด
    let PT = new Array(friends.length).fill().map(() => new Array(friends.length).fill(0));
    // ๋‹ค์Œ ๋‹ฌ ์„ ๋ฌผ ๋ฐ›๋Š” ์‚ฌ๋žŒ
    let answer = new Array(friends.length).fill(0);
    
    // ์นœ๊ตฌ๋“ค ์ธ๋ฑ์Šค ํ• ๋‹น
    friends.forEach((el, i) => FI[el] = i);
    console.log(FI);

    for (let e of gifts) {
        let temp = e.split(" ");
        // ์„ ๋ฌผ ์ง€์ˆ˜ ์ธก์ •
        GI[FI[temp[0]]] += 1;
        GI[FI[temp[1]]] -= 1;
        
        // ์„ ๋ฌผ ๊ตํ™˜
        PT[FI[temp[0]]][FI[temp[1]]] += 1;
    }
    console.log(GI);
    console.log(PT);

    for (let i = 0; i < friends.length; i++) {
        for (let j = i + 1; j < friends.length; j++) {
            if (PT[i][j] !== 0 || PT[j][i] !== 0) {
                if (PT[i][j] !== PT[j][i]) {
                    if (PT[i][j] > PT[j][i]) {
                        answer[i] += 1;
                    } else {
                        answer[j] += 1;
                    }
                } else if (PT[i][j] === PT[j][i]) {
                    if (GI[i] > GI[j]) {
                        answer[i] += 1;
                    } else if (GI[j] > GI[i]) {
                        answer[j] += 1;
                    }
                }
            } else {
                if (GI[i] > GI[j]) {
                    answer[i] += 1;
                } else if (GI[j] > GI[i]) {
                    answer[j] += 1;
                }
            }
        }
    }
    
    console.log(answer);
    return Math.max(...answer);
}

๐Ÿ’ก ์•Œ๊ฒŒ ๋œ ์ 

  • new Array(๊ธธ์ด).fill(0)์„ ํ†ตํ•ด, ๊ธธ์ด๋งŒํผ 0์œผ๋กœ ๊ฐ€๋“์ฐฌ ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • new Array(๊ธธ์ด.fill().map(() => new Array(๊ธธ์ด).fill(0))์„ ํ†ตํ•ด ๊ธธ์ด x ๊ธธ์ด๋งŒํผ์˜ 0์œผ๋กœ ๊ฐ€๋“์ฐฌ 2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • for of๋ฅผ ํ†ตํ•ด, ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ์— ๊ด€ํ•œ ๋ฐ˜๋ณต๋ฌธ์„ ์‹œํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • for in์€ ๋ณดํ†ต ๊ฐ์ฒด์˜ ๊ฐ ์›์†Œ๋ฅผ ๋ฐ˜๋ณตํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ค‘๋ณต ํƒ์ƒ‰์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด, ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์„ ์‹œํ–‰ํ•  ๋•Œ, j์˜ ๊ฒฝ์šฐ, i + 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋„๋ก ํ•œ๋‹ค.
  • Math.max() ํ•จ์ˆ˜ ์•ˆ์—์„œ๋Š” ...answer๊ณผ ๊ฐ™์ด, ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹นํ•˜์—ฌ, ๋ฐฐ์—ด ๊ฐ’๋“ค์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • ๊ตฌํ˜„์€ ์–ด๋ ต๋‹ค... ใ…œใ…œ

 

๐ŸŒ  ๋ฌธ์ œ

์นด์นด์˜ค์— ์ž…์‚ฌํ•œ ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋„ค์˜ค๋Š” "์นด์นด์˜ค๊ณ„์ •๊ฐœ๋ฐœํŒ€"์— ๋ฐฐ์น˜๋˜์–ด, ์นด์นด์˜ค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์˜ ์•„์ด๋””๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "๋„ค์˜ค"์—๊ฒŒ ์ฃผ์–ด์ง„ ์ฒซ ์—…๋ฌด๋Š” ์ƒˆ๋กœ ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์ด ์นด์นด์˜ค ์•„์ด๋”” ๊ทœ์น™์— ๋งž์ง€ ์•Š๋Š” ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, ์ž…๋ ฅ๋œ ์•„์ด๋””์™€ ์œ ์‚ฌํ•˜๋ฉด์„œ ๊ทœ์น™์— ๋งž๋Š” ์•„์ด๋””๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‹ค์Œ์€ ์นด์นด์˜ค ์•„์ด๋””์˜ ๊ทœ์น™์ž…๋‹ˆ๋‹ค.

์•„์ด๋””์˜ ๊ธธ์ด๋Š” 3์ž ์ด์ƒ 15์ž ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์•„์ด๋””๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋นผ๊ธฐ(-), ๋ฐ‘์ค„(_), ๋งˆ์นจํ‘œ(.) ๋ฌธ์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹จ, ๋งˆ์นจํ‘œ(.)๋Š” ์ฒ˜์Œ๊ณผ ๋์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋˜ํ•œ ์—ฐ์†์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
"๋„ค์˜ค"๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 7๋‹จ๊ณ„์˜ ์ˆœ์ฐจ์ ์ธ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ํ†ตํ•ด ์‹ ๊ทœ ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ์•„์ด๋””๊ฐ€ ์นด์นด์˜ค ์•„์ด๋”” ๊ทœ์น™์— ๋งž๋Š” ์ง€ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ทœ์น™์— ๋งž์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ทœ์น™์— ๋งž๋Š” ์ƒˆ๋กœ์šด ์•„์ด๋””๋ฅผ ์ถ”์ฒœํ•ด ์ฃผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์‹ ๊ทœ ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ์•„์ด๋””๊ฐ€ new_id ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด,

1๋‹จ๊ณ„ new_id์˜ ๋ชจ๋“  ๋Œ€๋ฌธ์ž๋ฅผ ๋Œ€์‘๋˜๋Š” ์†Œ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
2๋‹จ๊ณ„ new_id์—์„œ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋นผ๊ธฐ(-), ๋ฐ‘์ค„(_), ๋งˆ์นจํ‘œ(.)๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
3๋‹จ๊ณ„ new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ 2๋ฒˆ ์ด์ƒ ์—ฐ์†๋œ ๋ถ€๋ถ„์„ ํ•˜๋‚˜์˜ ๋งˆ์นจํ‘œ(.)๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
4๋‹จ๊ณ„ new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ ์ฒ˜์Œ์ด๋‚˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
5๋‹จ๊ณ„ new_id๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, new_id์— "a"๋ฅผ ๋Œ€์ž…ํ•ฉ๋‹ˆ๋‹ค.
6๋‹จ๊ณ„ new_id์˜ ๊ธธ์ด๊ฐ€ 16์ž ์ด์ƒ์ด๋ฉด, new_id์˜ ์ฒซ 15๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋“ค์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
     ๋งŒ์•ฝ ์ œ๊ฑฐ ํ›„ ๋งˆ์นจํ‘œ(.)๊ฐ€ new_id์˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ๋์— ์œ„์น˜ํ•œ ๋งˆ์นจํ‘œ(.) ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
7๋‹จ๊ณ„ new_id์˜ ๊ธธ์ด๊ฐ€ 2์ž ์ดํ•˜๋ผ๋ฉด, new_id์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ฅผ new_id์˜ ๊ธธ์ด๊ฐ€ 3์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์„œ ๋์— ๋ถ™์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, new_id ๊ฐ’์ด "...!@BaT#*..y.abcdefghijklm" ๋ผ๋ฉด, ์œ„ 7๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๊ณ  ๋‚˜๋ฉด new_id๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

1๋‹จ๊ณ„ ๋Œ€๋ฌธ์ž 'B'์™€ 'T'๊ฐ€ ์†Œ๋ฌธ์ž 'b'์™€ 't'๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.
"...!@BaT#*..y.abcdefghijklm" → "...!@bat#*..y.abcdefghijklm"

2๋‹จ๊ณ„ '!', '@', '#', '*' ๋ฌธ์ž๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
"...!@bat#*..y.abcdefghijklm" → "...bat..y.abcdefghijklm"

3๋‹จ๊ณ„ '...'์™€ '..' ๊ฐ€ '.'๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.
"...bat..y.abcdefghijklm" → ".bat.y.abcdefghijklm"

4๋‹จ๊ณ„ ์•„์ด๋””์˜ ์ฒ˜์Œ์— ์œ„์น˜ํ•œ '.'๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
".bat.y.abcdefghijklm" → "bat.y.abcdefghijklm"

5๋‹จ๊ณ„ ์•„์ด๋””๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋ณ€ํ™”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
"bat.y.abcdefghijklm" → "bat.y.abcdefghijklm"

6๋‹จ๊ณ„ ์•„์ด๋””์˜ ๊ธธ์ด๊ฐ€ 16์ž ์ด์ƒ์ด๋ฏ€๋กœ, ์ฒ˜์Œ 15์ž๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋“ค์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
"bat.y.abcdefghijklm" → "bat.y.abcdefghi"

7๋‹จ๊ณ„ ์•„์ด๋””์˜ ๊ธธ์ด๊ฐ€ 2์ž ์ดํ•˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋ณ€ํ™”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
"bat.y.abcdefghi" → "bat.y.abcdefghi"

๋”ฐ๋ผ์„œ ์‹ ๊ทœ ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ new_id๊ฐ€ "...!@BaT#*..y.abcdefghijklm"์ผ ๋•Œ, ๋„ค์˜ค์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ถ”์ฒœํ•˜๋Š” ์ƒˆ๋กœ์šด ์•„์ด๋””๋Š” "bat.y.abcdefghi" ์ž…๋‹ˆ๋‹ค.

 

์‹ ๊ทœ ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ์•„์ด๋””๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” new_id๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, "๋„ค์˜ค"๊ฐ€ ์„ค๊ณ„ํ•œ 7๋‹จ๊ณ„์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„์˜ ์ถ”์ฒœ ์•„์ด๋””๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

๐ŸŒ  ์ œํ•œ์‚ฌํ•ญ

  • new_id๋Š” ๊ธธ์ด 1 ์ด์ƒ 1,000 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • new_id๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž, ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ํŠน์ˆ˜๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • new_id์— ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜๋ฌธ์ž๋Š” -_.~!@#$%^&*()=+[{]}:?,<>/ ๋กœ ํ•œ์ •๋ฉ๋‹ˆ๋‹ค.

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ

no new_id result
์˜ˆ1 "...!@BaT#*..y.abcdefghijklm" "bat.y.abcdefghi"
์˜ˆ2 "z-+.^." "z--"
์˜ˆ3 "=.=" "aaa"
์˜ˆ4 "123_.def" "123_.def"
์˜ˆ5 "abcdefghijklmn.p" "abcdefghijklmn"

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2
7๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๋Š” ๋™์•ˆ new_id๊ฐ€ ๋ณ€ํ™”ํ•˜๋Š” ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.
2๋‹จ๊ณ„ "z-+.^." → "z-.."
3๋‹จ๊ณ„ "z-.." → "z-."
4๋‹จ๊ณ„ "z-." → "z-"
5๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.
6๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.
7๋‹จ๊ณ„ "z-" → "z--"

์ž…์ถœ๋ ฅ ์˜ˆ #3
7๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๋Š” ๋™์•ˆ new_id๊ฐ€ ๋ณ€ํ™”ํ•˜๋Š” ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.
2๋‹จ๊ณ„ "=.=" → "."
3๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.
4๋‹จ๊ณ„ "." → "" (new_id๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.)
5๋‹จ๊ณ„ "" → "a"
6๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.
7๋‹จ๊ณ„ "a" → "aaa"

์ž…์ถœ๋ ฅ ์˜ˆ #4
1๋‹จ๊ณ„์—์„œ 7๋‹จ๊ณ„๊นŒ์ง€ ๊ฑฐ์น˜๋Š” ๋™์•ˆ new_id("123_.def")๋Š” ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, new_id๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์นด์นด์˜ค์˜ ์•„์ด๋”” ๊ทœ์น™์— ๋งž์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #5
1๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.
2๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.
3๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.
4๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.
5๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.
6๋‹จ๊ณ„ "abcdefghijklmn.p" → "abcdefghijklmn." → "abcdefghijklmn"
7๋‹จ๊ณ„ ๋ณ€ํ™” ์—†์Šต๋‹ˆ๋‹ค.


๐Ÿงž ํ’€์ด

function solution(new_id) {
    let filterList = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "-", "_", "."];
    
    let answer = new_id;
    
    // 1๋‹จ๊ณ„: ์†Œ๋ฌธ์ž ์น˜ํ™˜
    answer = answer.toLowerCase();
    
    // 2๋‹จ๊ณ„: ๊ธฐํƒ€ ๋ฌธ์ž ์ œ๊ฑฐ
    answer = answer.split("").filter((e) => filterList.includes(e)).join("");
    
    // 3๋‹จ๊ณ„: ํ•˜๋‚˜์˜ ๋งˆ์นจํ‘œ๋กœ ์น˜ํ™˜
    let result = [];
    for (let i = 0; i < answer.length; i++) {
        if (!(answer[i] === "." && result[result.length - 1] === ".")) {
            result.push(answer[i]);
        }
    }
    answer = result.join("");
    
    // 4๋‹จ๊ณ„: ์ฒ˜์Œ, ๋์˜ ๋งˆ์นจํ‘œ ์ œ๊ฑฐ
    if (answer.startsWith(".")) {
        answer = answer.slice(1);
    }
    if (answer.endsWith(".")) {
        answer = answer.slice(0, -1);
    }
    
    // 5๋‹จ๊ณ„: ๋นˆ ๋ฌธ์ž์—ด์ผ ๊ฒฝ์šฐ, "a" ์ถ”๊ฐ€
    if (answer.length === 0) {
        answer = "a";
    }
    
    // 6๋‹จ๊ณ„: ๋ฌธ์ž ๊ธธ์ด ์ œํ•œ ๋ฐ ๋งˆ์ง€๋ง‰ ๋งˆ์นจํ‘œ ์ œ๊ฑฐ
    if (answer.length >= 16) {
        answer = answer.slice(0, 15);
        if (answer.endsWith(".")) {
            answer = answer.slice(0, -1);
        }
    }
    
    // 7๋‹จ๊ณ„. ๋ฌธ์ž ๊ธธ์ด 3์œผ๋กœ ์ œํ•œ
    while (answer.length < 3) {
        answer += answer[answer.length - 1];
    }
    
    return answer;
}

๐Ÿ’ก ์•Œ๊ฒŒ ๋œ ์ 

  • ์ •๊ทœํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋ฌธ์ œ๋ฅผ ๋ถ„๋ช… ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด์ง€๋งŒ, ์ •๊ทœํ‘œํ˜„์‹์ด ๊ธฐ์–ต์ด ๋‚˜์ง€ ์•Š์•„์„œ, ๋งŒ์•ฝ ์‹ค์ „์—์„œ๋„ ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์—ญ๋Ÿ‰์œผ๋กœ ํ’€๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค.
  • Array.includes(): ๋ฐฐ์—ด์— ํŠน์ • ๋ฌธ์ž์—ด์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ๋ฌป๋Š” ํ•จ์ˆ˜์ด๋‹ค.
  • ๋Œ€์‹ , Array.indexOf()๋ฅผ ํ™œ์šฉํ•˜์—ฌ, -1์ด ์•„๋‹Œ ๊ฒฝ์šฐ๋ฅผ ์ฐพ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํŒŒ์ด์ฌ๊ณผ ๋‹ฌ๋ฆฌ ๋ฐฐ์—ด์˜ ์Œ์ˆ˜ ์ธ๋ฑ์Šค (array[-1])๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • String.startsWith()์™€ String.endsWith()๋ฅผ ํ™œ์šฉํ•˜์—ฌ, ๋งจ ์•ž๊ณผ ๋์˜ ๋ฌธ์ž๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฌธ์ž์—ด์„ ์ž๋ฅด๋Š” ๊ฒƒ์€ slice()์™€ substring()์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
  • slice()๋Š” ์Œ์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ํ—ˆ์šฉํ•˜์ง€๋งŒ, substring()์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ฌธ์ž์—ด์— ๋ฌธ์ž์—ด์„ ๋”ํ•˜๋Š” ๊ฒƒ์€ '+' ์—ฐ์‚ฐ์ž๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿงฉ ์ •๊ทœํ‘œํ˜„์‹

function solution(new_id) {
    const answer = new_id
        .toLowerCase() // 1
        .replace(/[^\w-_.]/g, '') // 2
        .replace(/\.+/g, '.') // 3
        .replace(/^\.|\.$/g, '') // 4
        .replace(/^$/, 'a') // 5
        .slice(0, 15).replace(/\.$/, ''); // 6
    const len = answer.length;
    return len > 2 ? answer : answer + answer.charAt(len - 1).repeat(3 - len);
}

 

 

  • ๋ฌธ์ž์™€ ์ˆซ์ž
    • ๋‹จ์ผ ๋ฌธ์ž๋‚˜ ์ˆซ์ž๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ: a, b, 1, 2
  • ๋ฉ”ํƒ€๋ฌธ์ž
    • ํŠน์ • ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ํŠน๋ณ„ํ•œ ๋ฌธ์ž๋“ค์ž…๋‹ˆ๋‹ค.
    • .: ๋ชจ๋“  ๋‹จ์ผ ๋ฌธ์ž
    • ^: ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘
    • $: ๋ฌธ์ž์—ด์˜ ๋
    • *: 0ํšŒ ์ด์ƒ ๋ฐ˜๋ณต
    • +: 1ํšŒ ์ด์ƒ ๋ฐ˜๋ณต
    • ?: 0ํšŒ ๋˜๋Š” 1ํšŒ ๋ฐ˜๋ณต
    • \: ์ด์Šค์ผ€์ดํ”„ ๋ฌธ์ž๋กœ, ๋ฉ”ํƒ€๋ฌธ์ž ์ž์ฒด๋ฅผ ์ฐพ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
    • []: ๋ฌธ์ž ํด๋ž˜์Šค. ๋Œ€๊ด„ํ˜ธ ์•ˆ์— ์žˆ๋Š” ๋ฌธ์ž ์ค‘ ํ•˜๋‚˜์™€ ์ผ์น˜
    • |: OR ์—ฐ์‚ฐ์ž
    • (): ๊ทธ๋ฃนํ™”. ํ•˜์œ„ ํ‘œํ˜„์‹์— ๋Œ€ํ•ด ์บก์ฒ˜
  • ๋ฌธ์ž ํด๋ž˜์Šค
    • [abc]: 'a', 'b', 'c' ์ค‘ ํ•˜๋‚˜
    • [^abc]: 'a', 'b', 'c'๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž
    • [a-z]: 'a'๋ถ€ํ„ฐ 'z'๊นŒ์ง€์˜ ๋ชจ๋“  ์†Œ๋ฌธ์ž
    • [A-Z]: 'A'๋ถ€ํ„ฐ 'Z'๊นŒ์ง€์˜ ๋ชจ๋“  ๋Œ€๋ฌธ์ž
    • [0-9]: ๋ชจ๋“  ์ˆซ์ž
  • ์ˆ˜๋Ÿ‰์ž
    • *: 0ํšŒ ์ด์ƒ ๋ฐ˜๋ณต
    • +: 1ํšŒ ์ด์ƒ ๋ฐ˜๋ณต
    • ?: 0ํšŒ ๋˜๋Š” 1ํšŒ
    • {n}: ์ •ํ™•ํžˆ nํšŒ ๋ฐ˜๋ณต
    • {n,}: nํšŒ ์ด์ƒ ๋ฐ˜๋ณต
    • {n,m}: nํšŒ ์ด์ƒ mํšŒ ์ดํ•˜ ๋ฐ˜๋ณต
  • ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด
    • \d: ์ˆซ์ž (0-9์™€ ๋™์ผ)
    • \D: ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒƒ
    • \w: ๋‹จ์–ด ๋ฌธ์ž (์•ŒํŒŒ๋ฒณ + ์ˆซ์ž + ๋ฐ‘์ค„)
    • \W: ๋‹จ์–ด ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ๊ฒƒ
    • \s: ๊ณต๋ฐฑ ๋ฌธ์ž (์ŠคํŽ˜์ด์Šค, ํƒญ ๋“ฑ)
    • \S: ๊ณต๋ฐฑ ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ๊ฒƒ

 

  • ๊ธฐ๋ณธ ๋ฌธ์ž ์ฐพ๊ธฐ
    • cat: 'cat'๊ณผ ์ผ์น˜
    • 123: '123'๊ณผ ์ผ์น˜
  • ๋ฌธ์ž ํด๋ž˜์Šค ์‚ฌ์šฉ
    • [abc]: 'a', 'b', 'c' ์ค‘ ํ•˜๋‚˜
    • [a-z]: ๋ชจ๋“  ์†Œ๋ฌธ์ž
    • [0-9]: ๋ชจ๋“  ์ˆซ์ž
  • ๋ฉ”ํƒ€๋ฌธ์ž ์‚ฌ์šฉ
    • .: ์ž„์˜์˜ ํ•œ ๋ฌธ์ž (๊ฐœํ–‰ ์ œ์™ธ)
    • ^a: 'a'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž์—ด
    • z$: 'z'๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž์—ด
  • ์ˆ˜๋Ÿ‰์ž ์‚ฌ์šฉ
    • a*: 'a'๊ฐ€ 0ํšŒ ์ด์ƒ ๋ฐ˜๋ณต
    • a+: 'a'๊ฐ€ 1ํšŒ ์ด์ƒ ๋ฐ˜๋ณต
    • a?: 'a'๊ฐ€ 0ํšŒ ๋˜๋Š” 1ํšŒ ์กด์žฌ
    • a{2}: 'a'๊ฐ€ ์ •ํ™•ํžˆ 2ํšŒ ๋ฐ˜๋ณต
    • a{2,}: 'a'๊ฐ€ 2ํšŒ ์ด์ƒ ๋ฐ˜๋ณต
    • a{2,4}: 'a'๊ฐ€ 2ํšŒ ์ด์ƒ 4ํšŒ ์ดํ•˜ ๋ฐ˜๋ณต
  • ๋ณต์žกํ•œ ํŒจํ„ด
    • \d{3}-\d{2}-\d{4}: ํ˜•์‹ '123-45-6789'์˜ ์ˆซ์ž
    • (abc|def): 'abc' ๋˜๋Š” 'def'

 

 

๐ŸŒ  ๋ฌธ์ œ

์Šค๋งˆํŠธํฐ ์ „ํ™” ํ‚คํŒจ๋“œ์˜ ๊ฐ ์นธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆซ์ž๋“ค์ด ์ ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ „ํ™” ํ‚คํŒจ๋“œ์—์„œ ์™ผ์†๊ณผ ์˜ค๋ฅธ์†์˜ ์—„์ง€์†๊ฐ€๋ฝ๋งŒ์„ ์ด์šฉํ•ด์„œ ์ˆซ์ž๋งŒ์„ ์ž…๋ ฅํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๋งจ ์ฒ˜์Œ ์™ผ์† ์—„์ง€์†๊ฐ€๋ฝ์€ * ํ‚คํŒจ๋“œ์— ์˜ค๋ฅธ์† ์—„์ง€์†๊ฐ€๋ฝ์€ # ํ‚คํŒจ๋“œ ์œ„์น˜์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ, ์—„์ง€์†๊ฐ€๋ฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—„์ง€์†๊ฐ€๋ฝ์€ ์ƒํ•˜์ขŒ์šฐ 4๊ฐ€์ง€ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ‚คํŒจ๋“œ ์ด๋™ ํ•œ ์นธ์€ ๊ฑฐ๋ฆฌ๋กœ 1์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
์™ผ์ชฝ ์—ด์˜ 3๊ฐœ์˜ ์ˆซ์ž 1, 4, 7์„ ์ž…๋ ฅํ•  ๋•Œ๋Š” ์™ผ์† ์—„์ง€์†๊ฐ€๋ฝ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ฅธ์ชฝ ์—ด์˜ 3๊ฐœ์˜ ์ˆซ์ž 3, 6, 9๋ฅผ ์ž…๋ ฅํ•  ๋•Œ๋Š” ์˜ค๋ฅธ์† ์—„์ง€์†๊ฐ€๋ฝ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๊ฐ€์šด๋ฐ ์—ด์˜ 4๊ฐœ์˜ ์ˆซ์ž 2, 5, 8, 0์„ ์ž…๋ ฅํ•  ๋•Œ๋Š” ๋‘ ์—„์ง€์†๊ฐ€๋ฝ์˜ ํ˜„์žฌ ํ‚คํŒจ๋“œ์˜ ์œ„์น˜์—์„œ ๋” ๊ฐ€๊นŒ์šด ์—„์ง€์†๊ฐ€๋ฝ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
4-1. ๋งŒ์•ฝ ๋‘ ์—„์ง€์†๊ฐ€๋ฝ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™๋‹ค๋ฉด, ์˜ค๋ฅธ์†์žก์ด๋Š” ์˜ค๋ฅธ์† ์—„์ง€์†๊ฐ€๋ฝ, ์™ผ์†์žก์ด๋Š” ์™ผ์† ์—„์ง€์†๊ฐ€๋ฝ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ˆœ์„œ๋Œ€๋กœ ๋ˆ„๋ฅผ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers, ์™ผ์†์žก์ด์ธ์ง€ ์˜ค๋ฅธ์†์žก์ด์ธ ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด hand๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ ๋ฒˆํ˜ธ๋ฅผ ๋ˆ„๋ฅธ ์—„์ง€์†๊ฐ€๋ฝ์ด ์™ผ์†์ธ ์ง€ ์˜ค๋ฅธ์†์ธ ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์—ฐ์†๋œ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐ŸŒ  ์ œํ•œ์‚ฌํ•ญ

  • numbers ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • numbers ๋ฐฐ์—ด ์›์†Œ์˜ ๊ฐ’์€ 0 ์ด์ƒ 9 ์ดํ•˜์ธ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.
  • hand๋Š” "left" ๋˜๋Š” "right" ์ž…๋‹ˆ๋‹ค.
  • "left"๋Š” ์™ผ์†์žก์ด, "right"๋Š” ์˜ค๋ฅธ์†์žก์ด๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์™ผ์† ์—„์ง€์†๊ฐ€๋ฝ์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ๋Š” L, ์˜ค๋ฅธ์† ์—„์ง€์†๊ฐ€๋ฝ์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ๋Š” R์„ ์ˆœ์„œ๋Œ€๋กœ ์ด์–ด๋ถ™์—ฌ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ return ํ•ด์ฃผ์„ธ์š”.

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ

numbers hand result
[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL"
[7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR"
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

์ˆœ์„œ๋Œ€๋กœ ๋ˆŒ๋Ÿฌ์•ผ ํ•  ๋ฒˆํ˜ธ๊ฐ€ [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5]์ด๊ณ , ์˜ค๋ฅธ์†์žก์ด์ž…๋‹ˆ๋‹ค.

์™ผ์† ์œ„์น˜ ์˜ค๋ฅธ์† ์œ„์น˜ ๋ˆŒ๋Ÿฌ์•ผ ํ•  ์ˆซ์ž ์‚ฌ์šฉํ•œ ์† ์„ค๋ช…
* # 1 L 1์€ ์™ผ์†์œผ๋กœ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
1 # 3 R 3์€ ์˜ค๋ฅธ์†์œผ๋กœ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
1 3 4 L 4๋Š” ์™ผ์†์œผ๋กœ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
4 3 5 L ์™ผ์† ๊ฑฐ๋ฆฌ๋Š” 1, ์˜ค๋ฅธ์† ๊ฑฐ๋ฆฌ๋Š” 2์ด๋ฏ€๋กœ ์™ผ์†์œผ๋กœ 5๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
5 3 8 L ์™ผ์† ๊ฑฐ๋ฆฌ๋Š” 1, ์˜ค๋ฅธ์† ๊ฑฐ๋ฆฌ๋Š” 3์ด๋ฏ€๋กœ ์™ผ์†์œผ๋กœ 8์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
8 3 2 R ์™ผ์† ๊ฑฐ๋ฆฌ๋Š” 2, ์˜ค๋ฅธ์† ๊ฑฐ๋ฆฌ๋Š” 1์ด๋ฏ€๋กœ ์˜ค๋ฅธ์†์œผ๋กœ 2๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
8 2 1 L 1์€ ์™ผ์†์œผ๋กœ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
1 2 4 L 4๋Š” ์™ผ์†์œผ๋กœ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
4 2 5 R ์™ผ์† ๊ฑฐ๋ฆฌ์™€ ์˜ค๋ฅธ์† ๊ฑฐ๋ฆฌ๊ฐ€ 1๋กœ ๊ฐ™์œผ๋ฏ€๋กœ, ์˜ค๋ฅธ์†์œผ๋กœ 5๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
4 5 9 R 9๋Š” ์˜ค๋ฅธ์†์œผ๋กœ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
4 9 5 L ์™ผ์† ๊ฑฐ๋ฆฌ๋Š” 1, ์˜ค๋ฅธ์† ๊ฑฐ๋ฆฌ๋Š” 2์ด๋ฏ€๋กœ ์™ผ์†์œผ๋กœ 5๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
5 9 - -
๋”ฐ๋ผ์„œ "LRLLLRLLRRL"๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

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

์™ผ์†์žก์ด๊ฐ€ [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2]๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ˆ„๋ฅด๋ฉด ์‚ฌ์šฉํ•œ ์†์€ "LRLLRRLLLRR"์ด ๋ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

์˜ค๋ฅธ์†์žก์ด๊ฐ€ [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ˆ„๋ฅด๋ฉด ์‚ฌ์šฉํ•œ ์†์€ "LLRLLRLLRL"์ด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿงž ํ’€์ด

function solution(numbers, hand) {
    let keyPad = {1: ["L", 0, 0], 4: ["L", 1, 0], 7: ["L", 2, 0], 3: ["R", 0, 2], 6: ["R", 1, 2], 9: ["R", 2, 2]};
    let level = {2: [0, 1], 5: [1, 1], 8: [2, 1], 0: [3, 1]};

    let presentL = [3, 0];
    let presentR = [3, 2];

    let answer = [];

    numbers.forEach((e) => {
        if (keyPad[e] != undefined) {
            answer.push(keyPad[e][0]);
            if (keyPad[e][0] === "L") {
                presentL = [keyPad[e][1], keyPad[e][2]];
            } else {
                presentR = [keyPad[e][1], keyPad[e][2]];
            }
        } else {
            let target = level[e];
            let leftDistance = Math.abs(target[0] - presentL[0]) + Math.abs(target[1] - presentL[1]);
            let rightDistance = Math.abs(target[0] - presentR[0]) + Math.abs(target[1] - presentR[1]);
            let nearHand = leftDistance < rightDistance ? "L" : leftDistance > rightDistance ? "R" : hand === "right" ? "R" : "L";
            answer.push(nearHand);
            if (nearHand === "R") {
                presentR = target;
            } else {
                presentL = target;
            }
        }
    });

    return answer.join("");
}

๐Ÿ’ก ์•Œ๊ฒŒ ๋œ ์ 

  • [x1, y1] - [x2, y2]์˜ ์ ˆ๋Œ“๊ฐ’์œผ๋กœ 2์ฐจ์› ๋ฐฐ์—ด์˜ ์š”์†Œ ๊ฐ„ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ ˆ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜๋Š” Math.abs(n)์œผ๋กœ, Math ํ•จ์ˆ˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค.
  • ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋Š” ์ค‘์ฒฉ ๊ฐ€๋Šฅํ•˜๋‹ค

๐ŸŒ  ๋ฌธ์ œ

๋‚˜๋งŒ์˜ ์นด์นด์˜ค ์„ฑ๊ฒฉ ์œ ํ˜• ๊ฒ€์‚ฌ์ง€๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๊ฒฉ ์œ ํ˜• ๊ฒ€์‚ฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ 4๊ฐœ ์ง€ํ‘œ๋กœ ์„ฑ๊ฒฉ ์œ ํ˜•์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๊ฒฉ์€ ๊ฐ ์ง€ํ‘œ์—์„œ ๋‘ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜๋กœ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

 

์ง€ํ‘œ ๋ฒˆํ˜ธ          ์„ฑ๊ฒฉ ์œ ํ˜•

1๋ฒˆ ์ง€ํ‘œ           ๋ผ์ด์–ธํ˜•(R), ํŠœ๋ธŒํ˜•(T)

2๋ฒˆ ์ง€ํ‘œ           ์ฝ˜ํ˜•(C), ํ”„๋กœ๋„ํ˜•(F)

3๋ฒˆ ์ง€ํ‘œ           ์ œ์ด์ง€ํ˜•(J), ๋ฌด์ง€ํ˜•(M)

4๋ฒˆ ์ง€ํ‘œ           ์–ดํ”ผ์น˜ํ˜•(A), ๋„ค์˜คํ˜•(N)

4๊ฐœ์˜ ์ง€ํ‘œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์„ฑ๊ฒฉ ์œ ํ˜•์€ ์ด 16(=2 x 2 x 2 x 2)๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "RFMN"์ด๋‚˜ "TCMA"์™€ ๊ฐ™์€ ์„ฑ๊ฒฉ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ฒ€์‚ฌ์ง€์—๋Š” ์ด n๊ฐœ์˜ ์งˆ๋ฌธ์ด ์žˆ๊ณ , ๊ฐ ์งˆ๋ฌธ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ 7๊ฐœ์˜ ์„ ํƒ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋งค์šฐ ๋น„๋™์˜

๋น„๋™์˜

์•ฝ๊ฐ„ ๋น„๋™์˜

๋ชจ๋ฅด๊ฒ ์Œ

์•ฝ๊ฐ„ ๋™์˜

๋™์˜

๋งค์šฐ ๋™์˜

๊ฐ ์งˆ๋ฌธ์€ 1๊ฐ€์ง€ ์ง€ํ‘œ๋กœ ์„ฑ๊ฒฉ ์œ ํ˜• ์ ์ˆ˜๋ฅผ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ํ•œ ์งˆ๋ฌธ์—์„œ 4๋ฒˆ ์ง€ํ‘œ๋กœ ์•„๋ž˜ ํ‘œ์ฒ˜๋Ÿผ ์ ์ˆ˜๋ฅผ ๋งค๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์„ ํƒ์ง€   ์„ฑ๊ฒฉ ์œ ํ˜• ์ ์ˆ˜

๋งค์šฐ ๋น„๋™์˜       ๋„ค์˜คํ˜• 3์ 

๋น„๋™์˜   ๋„ค์˜คํ˜• 2์ 

์•ฝ๊ฐ„ ๋น„๋™์˜       ๋„ค์˜คํ˜• 1์ 

๋ชจ๋ฅด๊ฒ ์Œ           ์–ด๋–ค ์„ฑ๊ฒฉ ์œ ํ˜•๋„ ์ ์ˆ˜๋ฅผ ์–ป์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์•ฝ๊ฐ„ ๋™์˜          ์–ดํ”ผ์น˜ํ˜• 1์ 

๋™์˜      ์–ดํ”ผ์น˜ํ˜• 2์ 

๋งค์šฐ ๋™์˜          ์–ดํ”ผ์น˜ํ˜• 3์ 

์ด๋•Œ ๊ฒ€์‚ฌ์ž๊ฐ€ ์งˆ๋ฌธ์—์„œ ์•ฝ๊ฐ„ ๋™์˜ ์„ ํƒ์ง€๋ฅผ ์„ ํƒํ•  ๊ฒฝ์šฐ ์–ดํ”ผ์น˜ํ˜•(A) ์„ฑ๊ฒฉ ์œ ํ˜• 1์ ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ฒ€์‚ฌ์ž๊ฐ€ ๋งค์šฐ ๋น„๋™์˜ ์„ ํƒ์ง€๋ฅผ ์„ ํƒํ•  ๊ฒฝ์šฐ ๋„ค์˜คํ˜•(N) ์„ฑ๊ฒฉ ์œ ํ˜• 3์ ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์œ„ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋„ค์˜คํ˜•์ด ๋น„๋™์˜, ์–ดํ”ผ์น˜ํ˜•์ด ๋™์˜์ธ ๊ฒฝ์šฐ๋งŒ ์ฃผ์–ด์ง€์ง€ ์•Š๊ณ , ์งˆ๋ฌธ์— ๋”ฐ๋ผ ๋„ค์˜คํ˜•์ด ๋™์˜, ์–ดํ”ผ์น˜ํ˜•์ด ๋น„๋™์˜์ธ ๊ฒฝ์šฐ๋„ ์ฃผ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐ ์„ ํƒ์ง€๋Š” ๊ณ ์ •์ ์ธ ํฌ๊ธฐ์˜ ์ ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋งค์šฐ ๋™์˜๋‚˜ ๋งค์šฐ ๋น„๋™์˜ ์„ ํƒ์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด 3์ ์„ ์–ป์Šต๋‹ˆ๋‹ค.

๋™์˜๋‚˜ ๋น„๋™์˜ ์„ ํƒ์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด 2์ ์„ ์–ป์Šต๋‹ˆ๋‹ค.

์•ฝ๊ฐ„ ๋™์˜๋‚˜ ์•ฝ๊ฐ„ ๋น„๋™์˜ ์„ ํƒ์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด 1์ ์„ ์–ป์Šต๋‹ˆ๋‹ค.

๋ชจ๋ฅด๊ฒ ์Œ ์„ ํƒ์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด ์ ์ˆ˜๋ฅผ ์–ป์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฒ€์‚ฌ ๊ฒฐ๊ณผ๋Š” ๋ชจ๋“  ์งˆ๋ฌธ์˜ ์„ฑ๊ฒฉ ์œ ํ˜• ์ ์ˆ˜๋ฅผ ๋”ํ•˜์—ฌ ๊ฐ ์ง€ํ‘œ์—์„œ ๋” ๋†’์€ ์ ์ˆ˜๋ฅผ ๋ฐ›์€ ์„ฑ๊ฒฉ ์œ ํ˜•์ด ๊ฒ€์‚ฌ์ž์˜ ์„ฑ๊ฒฉ ์œ ํ˜•์ด๋ผ๊ณ  ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ํ•˜๋‚˜์˜ ์ง€ํ‘œ์—์„œ ๊ฐ ์„ฑ๊ฒฉ ์œ ํ˜• ์ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด, ๋‘ ์„ฑ๊ฒฉ ์œ ํ˜• ์ค‘ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ๋น ๋ฅธ ์„ฑ๊ฒฉ ์œ ํ˜•์„ ๊ฒ€์‚ฌ์ž์˜ ์„ฑ๊ฒฉ ์œ ํ˜•์ด๋ผ๊ณ  ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

 

์งˆ๋ฌธ๋งˆ๋‹ค ํŒ๋‹จํ•˜๋Š” ์ง€ํ‘œ๋ฅผ ๋‹ด์€ 1์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด survey์™€ ๊ฒ€์‚ฌ์ž๊ฐ€ ๊ฐ ์งˆ๋ฌธ๋งˆ๋‹ค ์„ ํƒํ•œ ์„ ํƒ์ง€๋ฅผ ๋‹ด์€ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด choices๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ, ๊ฒ€์‚ฌ์ž์˜ ์„ฑ๊ฒฉ ์œ ํ˜• ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ๋ฅผ ์ง€ํ‘œ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐ŸŒ  ์ œํ•œ์‚ฌํ•ญ

1 ≤ survey์˜ ๊ธธ์ด ( = n) ≤ 1,000

survey์˜ ์›์†Œ๋Š” "RT", "TR", "FC", "CF", "MJ", "JM", "AN", "NA" ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

survey[i]์˜ ์ฒซ ๋ฒˆ์งธ ์บ๋ฆญํ„ฐ๋Š” i+1๋ฒˆ ์งˆ๋ฌธ์˜ ๋น„๋™์˜ ๊ด€๋ จ ์„ ํƒ์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ฐ›๋Š” ์„ฑ๊ฒฉ ์œ ํ˜•์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

survey[i]์˜ ๋‘ ๋ฒˆ์งธ ์บ๋ฆญํ„ฐ๋Š” i+1๋ฒˆ ์งˆ๋ฌธ์˜ ๋™์˜ ๊ด€๋ จ ์„ ํƒ์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ฐ›๋Š” ์„ฑ๊ฒฉ ์œ ํ˜•์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

choices์˜ ๊ธธ์ด = survey์˜ ๊ธธ์ด

 

choices[i]๋Š” ๊ฒ€์‚ฌ์ž๊ฐ€ ์„ ํƒํ•œ i+1๋ฒˆ์งธ ์งˆ๋ฌธ์˜ ์„ ํƒ์ง€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

1 ≤ choices์˜ ์›์†Œ ≤ 7

choices  ๋œป

1          ๋งค์šฐ ๋น„๋™์˜

2          ๋น„๋™์˜

3          ์•ฝ๊ฐ„ ๋น„๋™์˜

4          ๋ชจ๋ฅด๊ฒ ์Œ

5          ์•ฝ๊ฐ„ ๋™์˜

6          ๋™์˜

7          ๋งค์šฐ ๋™์˜

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ

survey   choices  result

["AN", "CF", "MJ", "RT", "NA"]        [5, 3, 2, 7, 5]       "TCMA"

["TR", "RT", "TR"] [7, 1, 3]  "RCJA"

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

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

 

1๋ฒˆ๋ถ€ํ„ฐ 3๋ฒˆ๊นŒ์ง€ ์งˆ๋ฌธ์˜ ์„ฑ๊ฒฉ ์œ ํ˜• ์ ์ˆ˜๋ฅผ ํ•ฉ์น˜๋ฉด ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

์ง€ํ‘œ ๋ฒˆํ˜ธ          ์„ฑ๊ฒฉ ์œ ํ˜•          ์ ์ˆ˜     ์„ฑ๊ฒฉ ์œ ํ˜•          ์ ์ˆ˜

1๋ฒˆ ์ง€ํ‘œ           ๋ผ์ด์–ธํ˜•(R)        6          ํŠœ๋ธŒํ˜•(T)           1

2๋ฒˆ ์ง€ํ‘œ           ์ฝ˜ํ˜•(C)  0          ํ”„๋กœ๋„ํ˜•(F)        0

3๋ฒˆ ์ง€ํ‘œ           ์ œ์ด์ง€ํ˜•(J)        0          ๋ฌด์ง€ํ˜•(M)          0

4๋ฒˆ ์ง€ํ‘œ           ์–ดํ”ผ์น˜ํ˜•(A)        0          ๋„ค์˜คํ˜•(N)          0

1๋ฒˆ ์ง€ํ‘œ๋Š” ํŠœ๋ธŒํ˜•(T)๋ณด๋‹ค ๋ผ์ด์–ธํ˜•(R)์˜ ์ ์ˆ˜๊ฐ€ ๋” ๋†’์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฒซ ๋ฒˆ์งธ ์ง€ํ‘œ์˜ ์„ฑ๊ฒฉ ์œ ํ˜•์€ R์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, 2, 3, 4๋ฒˆ ์ง€ํ‘œ๋Š” ๋ชจ๋‘ 0์ ์œผ๋กœ ๋™์ผํ•œ ์ ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2, 3, 4๋ฒˆ ์ง€ํ‘œ์˜ ์„ฑ๊ฒฉ ์œ ํ˜•์€ ์‚ฌ์ „์ˆœ์œผ๋กœ ๋น ๋ฅธ C, J, A์ž…๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ "RCJA"๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿงž ํ’€์ด

function solution(survey, choices) {
    let total_points = {"R": 0, "T": 0, "C": 0, "F": 0, "J": 0, "M": 0, "A": 0, "N": 0};
    let answer = [];
    
    survey.forEach((e, i) => {
        let disagree_temp = e[0];
        let agree_temp = e[1];
        
        if (choices[i] > 4) {
            total_points[agree_temp] += choices[i] - 4;
        } else if (choices[i] < 4) {
            total_points[disagree_temp] += 4 - choices[i];
        }
    })
     
    if (total_points["R"] < total_points["T"]) {
        answer.push("T");
    } else {
        answer.push("R");
    }
    
    if (total_points["C"] < total_points["F"]) {
        answer.push("F");
    } else {
        answer.push("C");
    }
    
    if (total_points["J"] < total_points["M"]) {
        answer.push("M");
    } else {
        answer.push("J");
    }
    
    if (total_points["A"] < total_points["N"]) {
        answer.push("N");
    } else {
        answer.push("A");
    }
    
    return answer.join("");
}

๐Ÿ’ก ์•Œ๊ฒŒ ๋œ ์ 

  • forEach()์—์„œ index๋ฅผ ์ ๊ทน ํ™œ์šฉํ•˜๋ฉด, index๊นŒ์ง€ ๊บผ๋‚ด์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฒ˜์Œ์—๋Š” if๋ฌธ์„ 4๊ฐœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , for๋ฌธ์„ ํ†ตํ•ด, object์˜ key ๊ฐ’์„ ๊บผ๋‚ด array๋กœ ๋งŒ๋“ค์–ด, ๋ฐ˜๋ณต์„ ํ•˜๋ ค ํ–ˆ์œผ๋‚˜, ๋•Œ๋กœ๋Š” ๋‹จ์ˆœํ•œ๊ฒŒ ๋” ์ง๊ด€์ ์ธ ๊ฒƒ ๊ฐ™์•„, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ’€์—ˆ๋‹ค.

๐ŸŒ  ๋ฌธ์ œ

์Šˆํผ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž ์˜ค๋ ๋ฆฌ๋Š” ํฐ ๊ณ ๋ฏผ์— ๋น ์กŒ๋‹ค. ๊ทธ๋…€๊ฐ€ ๋งŒ๋“  ํ”„๋žœ์ฆˆ ์˜ค์ฒœ์„ฑ์ด ๋Œ€์„ฑ๊ณต์„ ๊ฑฐ๋’€์ง€๋งŒ, ์š”์ฆ˜ ์‹ ๊ทœ ์‚ฌ์šฉ์ž์˜ ์ˆ˜๊ฐ€ ๊ธ‰๊ฐํ•œ ๊ฒƒ์ด๋‹ค. ์›์ธ์€ ์‹ ๊ทœ ์‚ฌ์šฉ์ž์™€ ๊ธฐ์กด ์‚ฌ์šฉ์ž ์‚ฌ์ด์— ์Šคํ…Œ์ด์ง€ ์ฐจ์ด๊ฐ€ ๋„ˆ๋ฌด ํฐ ๊ฒƒ์ด ๋ฌธ์ œ์˜€๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ ๊ณ ๋ฏผ ํ•œ ๊ทธ๋…€๋Š” ๋™์ ์œผ๋กœ ๊ฒŒ์ž„ ์‹œ๊ฐ„์„ ๋Š˜๋ ค์„œ ๋‚œ์ด๋„๋ฅผ ์กฐ์ ˆํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์—ญ์‹œ ์Šˆํผ ๊ฐœ๋ฐœ์ž๋ผ ๋Œ€๋ถ€๋ถ„์˜ ๋กœ์ง์€ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ, ์‹คํŒจ์œจ์„ ๊ตฌํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ์œ„๊ธฐ์— ๋น ์ง€๊ณ  ๋ง์•˜๋‹ค. ์˜ค๋ ๋ฆฌ๋ฅผ ์œ„ํ•ด ์‹คํŒจ์œจ์„ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•˜๋ผ.


์‹คํŒจ์œจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•œ๋‹ค.
์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ–ˆ์œผ๋‚˜ ์•„์ง ํด๋ฆฌ์–ดํ•˜์ง€ ๋ชปํ•œ ํ”Œ๋ ˆ์ด์–ด์˜ ์ˆ˜ / ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜
์ „์ฒด ์Šคํ…Œ์ด์ง€์˜ ๊ฐœ์ˆ˜ N, ๊ฒŒ์ž„์„ ์ด์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ๋ฉˆ์ถฐ์žˆ๋Š” ์Šคํ…Œ์ด์ง€์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด stages๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์‹คํŒจ์œจ์ด ๋†’์€ ์Šคํ…Œ์ด์ง€๋ถ€ํ„ฐ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์Šคํ…Œ์ด์ง€์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š” ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜๋ผ.

๐ŸŒ  ์ œํ•œ์‚ฌํ•ญ

  • ์Šคํ…Œ์ด์ง€์˜ ๊ฐœ์ˆ˜ N์€ 1 ์ด์ƒ 500 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.
  • stages์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 200,000 ์ดํ•˜์ด๋‹ค.
  • stages์—๋Š” 1 ์ด์ƒ N + 1 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค.
  • ๊ฐ ์ž์—ฐ์ˆ˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ๋„์ „ ์ค‘์ธ ์Šคํ…Œ์ด์ง€์˜ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ๋‹จ, N + 1 ์€ ๋งˆ์ง€๋ง‰ ์Šคํ…Œ์ด์ง€(N ๋ฒˆ์งธ ์Šคํ…Œ์ด์ง€) ๊นŒ์ง€ ํด๋ฆฌ์–ด ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ๋งŒ์•ฝ ์‹คํŒจ์œจ์ด ๊ฐ™์€ ์Šคํ…Œ์ด์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด ์ž‘์€ ๋ฒˆํ˜ธ์˜ ์Šคํ…Œ์ด์ง€๊ฐ€ ๋จผ์ € ์˜ค๋„๋ก ํ•˜๋ฉด ๋œ๋‹ค.
  • ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ•œ ์œ ์ €๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์Šคํ…Œ์ด์ง€์˜ ์‹คํŒจ์œจ์€ 0 ์œผ๋กœ ์ •์˜ํ•œ๋‹ค.

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ

N Stages Result
5 [2, 1, 2, 6, 2, 4, 3, 3] [3, 4, 2, 1, 5]
4 [4, 4, 4, 4, 4] [4, 1, 2, 3]

 

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
1๋ฒˆ ์Šคํ…Œ์ด์ง€์—๋Š” ์ด 8๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋„์ „ํ–ˆ์œผ๋ฉฐ, ์ด ์ค‘ 1๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์•„์ง ํด๋ฆฌ์–ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1๋ฒˆ ์Šคํ…Œ์ด์ง€์˜ ์‹คํŒจ์œจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
1 ๋ฒˆ ์Šคํ…Œ์ด์ง€ ์‹คํŒจ์œจ : 1/8
2๋ฒˆ ์Šคํ…Œ์ด์ง€์—๋Š” ์ด 7๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋„์ „ํ–ˆ์œผ๋ฉฐ, ์ด ์ค‘ 3๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์•„์ง ํด๋ฆฌ์–ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2๋ฒˆ ์Šคํ…Œ์ด์ง€์˜ ์‹คํŒจ์œจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
2 ๋ฒˆ ์Šคํ…Œ์ด์ง€ ์‹คํŒจ์œจ : 3/7
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‚˜๋จธ์ง€ ์Šคํ…Œ์ด์ง€์˜ ์‹คํŒจ์œจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
3 ๋ฒˆ ์Šคํ…Œ์ด์ง€ ์‹คํŒจ์œจ : 2/4
4๋ฒˆ ์Šคํ…Œ์ด์ง€ ์‹คํŒจ์œจ : 1/2
5๋ฒˆ ์Šคํ…Œ์ด์ง€ ์‹คํŒจ์œจ : 0/1
๊ฐ ์Šคํ…Œ์ด์ง€์˜ ๋ฒˆํ˜ธ๋ฅผ ์‹คํŒจ์œจ์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
[3,4,2,1,5]


์ž…์ถœ๋ ฅ ์˜ˆ #2
๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์ง€๋ง‰ ์Šคํ…Œ์ด์ง€์— ์žˆ์œผ๋ฏ€๋กœ 4๋ฒˆ ์Šคํ…Œ์ด์ง€์˜ ์‹คํŒจ์œจ์€ 1์ด๋ฉฐ ๋‚˜๋จธ์ง€ ์Šคํ…Œ์ด์ง€์˜ ์‹คํŒจ์œจ์€ 0์ด๋‹ค.
[4,1,2,3]


๐Ÿงž ํ’€์ด

function solution(N, stages) {
    let answer = {};
    for (let i = 1; i <= N; i++) {
        let deno = stages.filter((e) => e === i).length; 
        let nume = stages.filter((e) => e >= i).length; 
        if (nume === 0) {
            answer[i] = 0;
        } else {
            answer[i] = deno / nume;
        }
    }

    let sortedArray = Object.keys(answer);

    sortedArray.sort((a, b) => answer[b] - answer[a] || a - b);

    return sortedArray.map(item => parseInt(item));
}

๐Ÿ’ก ์•Œ๊ฒŒ ๋œ ์ 

  • Object.keys(obj)๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์˜ ํ‚ค๋งŒ ๋‹ด์€ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ž๋งคํ’ˆ์œผ๋กœ Object.values(obj)๋Š” ๊ฐ์ฒด์˜ ๊ฐ’๋งŒ, Object.entries(obj)๋Š” [ํ‚ค, ๊ฐ’] ์Œ์„ ๋‹ด์€ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • answer[b] - answer[a]๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์„ ์œ„ํ•œ ๋น„๊ต์‹์ธ๋ฐ, ํ•ด๋‹น ๊ฐ’์ด 0์ด ๋˜๋ฉด, ์ด๋Š” false๋ฅผ ๋œปํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ||์—์„œ ๊ฑฐ์ง“์œผ๋กœ ๋„˜์–ด๊ฐ€, ๊ทธ ๋‹ค์Œ ์‹์ธ a - b๋ฅผ ๋น„๊ตํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ์‹คํŒจ์œจ์— ๋”ฐ๋ฅธ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ๊ณผ, ์‹คํŒจ์œจ์ด ๊ฐ™์„ ๋•Œ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
  • ๊ทธ๋ ‡์ง€๋งŒ ์ด๋ฏธ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋กœ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น ๋ถ€๋ถ„์€ ๋ถˆํ•„์š”ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๊ธด ํ•˜๋‹ค.
  • parseInt() ํ•จ์ˆ˜๋‚˜ Number()ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด, ๋ฌธ์ž์—ด์„ ์ˆซ์ž, ํ˜น์€ ์ •์ˆ˜ํ˜•์œผ๋กœ ํ˜•๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐ŸŒ  ๋ฌธ์ œ ์„ค๋ช…


๋„ค์˜ค์™€ ํ”„๋กœ๋„๊ฐ€ ์ˆซ์ž๋†€์ด๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค์˜ค๊ฐ€ ํ”„๋กœ๋„์—๊ฒŒ ์ˆซ์ž๋ฅผ ๊ฑด๋„ฌ ๋•Œ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋‹จ์–ด๋กœ ๋ฐ”๊พผ ์นด๋“œ๋ฅผ ๊ฑด๋„ค์ฃผ๋ฉด ํ”„๋กœ๋„๋Š” ์›๋ž˜ ์ˆซ์ž๋ฅผ ์ฐพ๋Š” ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ˆซ์ž์˜ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋‹จ์–ด๋กœ ๋ฐ”๊พธ๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"
์ด๋ ‡๊ฒŒ ์ˆซ์ž์˜ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๊ฐ€ ์˜๋‹จ์–ด๋กœ ๋ฐ”๋€Œ์–ด์กŒ๊ฑฐ๋‚˜, ํ˜น์€ ๋ฐ”๋€Œ์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ์ธ ๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. s๊ฐ€ ์˜๋ฏธํ•˜๋Š” ์›๋ž˜ ์ˆซ์ž๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ฐธ๊ณ ๋กœ ๊ฐ ์ˆซ์ž์— ๋Œ€์‘๋˜๋Š” ์˜๋‹จ์–ด๋Š” ๋‹ค์Œ ํ‘œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ˆซ์ž ์˜๋‹จ์–ด
0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine

๐ŸŒ  ์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ s์˜ ๊ธธ์ด ≤ 50
  • s๊ฐ€ "zero" ๋˜๋Š” "0"์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • return ๊ฐ’์ด 1 ์ด์ƒ 2,000,000,000 ์ดํ•˜์˜ ์ •์ˆ˜๊ฐ€ ๋˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ž…๋ ฅ๋งŒ s๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ

s result
one4seveneight 1478
23four5six7 234567
2three45sixseven 234567
123 123

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค

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

  • ๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค

์ž…์ถœ๋ ฅ ์˜ˆ #3

  • "three"๋Š” 3, "six"๋Š” 6, "seven"์€ 7์— ๋Œ€์‘๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋‹ต์€ ์ž…์ถœ๋ ฅ ์˜ˆ #2์™€ ๊ฐ™์€ 234567์ด ๋ฉ๋‹ˆ๋‹ค.
    ์ž…์ถœ๋ ฅ ์˜ˆ #2์™€ #3๊ณผ ๊ฐ™์ด ๊ฐ™์€ ์ •๋‹ต์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #4

  • s์—๋Š” ์˜๋‹จ์–ด๋กœ ๋ฐ”๋€ ๋ถ€๋ถ„์ด ์—†์Šต๋‹ˆ๋‹ค.

๐Ÿงž ํ’€์ด

function solution(s) {
    const numberWords = {
        "zero": 0,
        "one": 1,
        "two": 2,
        "three": 3,
        "four": 4,
        "five": 5,
        "six": 6,
        "seven": 7,
        "eight": 8,
        "nine": 9
    };
    let answer = [];
    let arr = s.split("");
    let temp = [];
        for (let e of arr) {
        if (!isNaN(e)) {
            answer.push(+e);
            temp = [];
        } else {
            temp.push(e);
            let word = temp.join("");
            if (numberWords[word] !== undefined) {
                answer.push(numberWords[word]);
                temp = [];
            }
        }
    }
    
    return Number(answer.join(""));
}

๐Ÿ’ก ์•Œ๊ฒŒ ๋œ ์ 

  • ๊ฐ์ฒด (Object) ์ž๋ฃŒํ˜•์€ {"์†์„ฑ": "๊ฐ’"...} ์˜ ํ˜•ํƒœ๋กœ ๋˜์–ด ์žˆ๋‹ค.
  • NaN (Not a Number)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์„ ์—ฐ์‚ฐํ•  ๋•Œ 'NaN'์ด ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๋‹ค.
  • NaN์€ ์ž์‹ ๊ณผ๋„ ๊ฐ™์ง€ ์•Š๋‹ค.
  • NaN์€ Boolean ์ปจํ…์ŠคํŠธ์—์„œ false๋กœ ํ‰๊ฐ€๋œ๋‹ค.
  • isNaN ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด์ธ์ง€, ์ˆซ์ž๊ฐ€ ๋ฌธ์ž์—ดํ™”๋œ๊ฑด์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ์ฒด[์†์„ฑ]์„ ํ†ตํ•ด ๊ฐ์ฒด ์•ˆ ์†์„ฑ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ ,
  • object[key] !== undefined๋ฅผ ํ†ตํ•ด, ๊ฐ์ฒด ์•ˆ์— ํ•ด๋‹น ์†์„ฑ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

+ Recent posts