๐Ÿ“ฑ[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋Œ€์ถฉ ๋งŒ๋“  ์žํŒ

Chobbyยท2023๋…„ 3์›” 9์ผ
1

Programmers

๋ชฉ๋ก ๋ณด๊ธฐ
179/349

๐Ÿงก๋ฌธ์ œ ์„ค๋ช…

ํœด๋Œ€ํฐ์˜ ์žํŒ์€ ์ปดํ“จํ„ฐ ํ‚ค๋ณด๋“œ ์žํŒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ํ•˜๋‚˜์˜ ํ‚ค์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ํ• ๋‹น๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ค ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ ๋ฌธ์ž๊ฐ€ ํ• ๋‹น๋œ ๊ฒฝ์šฐ, ๋™์ผํ•œ ํ‚ค๋ฅผ ์—ฐ์†ํ•ด์„œ ๋น ๋ฅด๊ฒŒ ๋ˆ„๋ฅด๋ฉด ํ• ๋‹น๋œ ์ˆœ์„œ๋Œ€๋กœ ๋ฌธ์ž๊ฐ€ ๋ฐ”๋€๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 1๋ฒˆ ํ‚ค์— "A", "B", "C" ์ˆœ์„œ๋Œ€๋กœ ๋ฌธ์ž๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ๋‹ค๋ฉด 1๋ฒˆ ํ‚ค๋ฅผ ํ•œ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด "A", ๋‘ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด "B", ์„ธ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด "C"๊ฐ€ ๋˜๋Š” ์‹์ž…๋‹ˆ๋‹ค.

๊ฐ™์€ ๊ทœ์น™์„ ์ ์šฉํ•ด ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ๋งŒ๋“  ํœด๋Œ€ํฐ ์žํŒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํœด๋Œ€ํฐ ์žํŒ์€ ํ‚ค์˜ ๊ฐœ์ˆ˜๊ฐ€ 1๊ฐœ๋ถ€ํ„ฐ ์ตœ๋Œ€ 100๊ฐœ๊นŒ์ง€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠน์ • ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ์ž…๋ ฅ๋˜๋Š” ๋ฌธ์ž๋“ค๋„ ๋ฌด์ž‘์œ„๋กœ ๋ฐฐ์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜, ๊ฐ™์€ ๋ฌธ์ž๊ฐ€ ์žํŒ ์ „์ฒด์— ์—ฌ๋Ÿฌ ๋ฒˆ ํ• ๋‹น๋œ ๊ฒฝ์šฐ๋„ ์žˆ๊ณ , ํ‚ค ํ•˜๋‚˜์— ๊ฐ™์€ ๋ฌธ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ํ• ๋‹น๋œ ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ์•„์˜ˆ ํ• ๋‹น๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ช‡๋ช‡ ๋ฌธ์ž์—ด์€ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํœด๋Œ€ํฐ ์žํŒ์„ ์ด์šฉํ•ด ํŠน์ • ๋ฌธ์ž์—ด์„ ์ž‘์„ฑํ•  ๋•Œ, ํ‚ค๋ฅผ ์ตœ์†Œ ๋ช‡ ๋ฒˆ ๋ˆŒ๋Ÿฌ์•ผ ๊ทธ ๋ฌธ์ž์—ด์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

1๋ฒˆ ํ‚ค๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ํ• ๋‹น๋œ ๋ฌธ์ž๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ๋‹ด๊ธด ๋ฌธ์ž์—ด๋ฐฐ์—ด keymap๊ณผ ์ž…๋ ฅํ•˜๋ ค๋Š” ๋ฌธ์ž์—ด๋“ค์ด ๋‹ด๊ธด ๋ฌธ์ž์—ด ๋ฐฐ์—ด targets๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ ๋ฌธ์ž์—ด์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ‚ค๋ฅผ ์ตœ์†Œ ๋ช‡ ๋ฒˆ์”ฉ ๋ˆŒ๋Ÿฌ์•ผ ํ•˜๋Š”์ง€ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

๋‹จ, ๋ชฉํ‘œ ๋ฌธ์ž์—ด์„ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์„ ๋•Œ๋Š” -1์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’›์ œํ•œ์‚ฌํ•ญ

  • 1 โ‰ค keymap์˜ ๊ธธ์ด โ‰ค 100
  • 1 โ‰ค keymap์˜ ์›์†Œ์˜ ๊ธธ์ด โ‰ค 100
  • keymap[i]๋Š” i + 1๋ฒˆ ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ”๋€Œ๋Š” ๋ฌธ์ž๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด keymap[0] = "ABACD" ์ธ ๊ฒฝ์šฐ 1๋ฒˆ ํ‚ค๋ฅผ ํ•œ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด A, ๋‘ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด B, ์„ธ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด A ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • keymap์˜ ์›์†Œ์˜ ๊ธธ์ด๋Š” ์„œ๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • keymap์˜ ์›์†Œ๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 1 โ‰ค targets์˜ ๊ธธ์ด โ‰ค 100
  • 1 โ‰ค targets์˜ ์›์†Œ์˜ ๊ธธ์ด โ‰ค 100
  • targets์˜ ์›์†Œ๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’š์ž…์ถœ๋ ฅ ์˜ˆ

keymaptargetsresult
["ABACD", "BCEFD"]["ABCD","AABB"][9, 4]
["AA"]["B"][-1]
["AGZ", "BSSS"]["ASA","BGZ"][4, 6]

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

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

"ABCD"์˜ ๊ฒฝ์šฐ,

  • 1๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ โ†’ A
  • 2๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ โ†’ B
  • 2๋ฒˆ ํ‚ค ๋‘ ๋ฒˆ โ†’ C
  • 1๋ฒˆ ํ‚ค ๋‹ค์„ฏ ๋ฒˆ โ†’ D
  • ๋”ฐ๋ผ์„œ ์ดํ•ฉ์ธ 9๋ฅผ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

"AABB"์˜ ๊ฒฝ์šฐ,

  • 1๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ โ†’ A
  • 1๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ โ†’ A
  • 2๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ โ†’ B
  • 2๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ โ†’ B
  • ๋”ฐ๋ผ์„œ ์ดํ•ฉ์ธ 4๋ฅผ ๋‘ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ [9,4]๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

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

"B"์˜ ๊ฒฝ์šฐ, 'B'๊ฐ€ ์–ด๋””์—๋„ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— -1์„ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฒฐ๊ณผ์ ์œผ๋กœ [-1]์„ return ํ•ฉ๋‹ˆ๋‹ค.

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

"ASA"์˜ ๊ฒฝ์šฐ,

  • 1๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ โ†’ A
  • 2๋ฒˆ ํ‚ค ๋‘ ๋ฒˆ โ†’ S
  • 1๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ โ†’ A
  • ๋”ฐ๋ผ์„œ ์ดํ•ฉ์ธ 4๋ฅผ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

"BGZ"์˜ ๊ฒฝ์šฐ,

  • 2๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ โ†’ B
  • 1๋ฒˆ ํ‚ค ๋‘ ๋ฒˆ โ†’ G
  • 1๋ฒˆ ํ‚ค ์„ธ ๋ฒˆ โ†’ Z
  • ๋”ฐ๋ผ์„œ ์ดํ•ฉ์ธ 6์„ ๋‘ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ [4, 6]์„ return ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’œ๋‚˜์˜ ํ’€์ด

ํ•ด๋‹น ๋ฌธ์ œ๋Š” 1๋ ˆ๋ฒจ์˜ ๋ฌธ์ œ๋กœ ํšจ์œจ์„ฑ์„ ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
๋น ๋ฅด๊ฒŒ ์ „์ฒด ๋ฐ˜๋ณต์„ ๋Œ๋ฉฐ ๊ฐ€์žฅ ์ตœ์†Œ์˜ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๊ด€๊ฑด

function solution(keymap, targets) {
    // [ABCD]
    return targets.map(a => {
        // 'A'
        let result = [...a].map(b => {
            let min = Infinity
            // [ABCD]
            keymap.forEach((c) => {
                // 'A'
                [...c].forEach((d, i) => {
                  if(d === b) {
                        if(min > i) min = i+1
                    }     
                })
            })
            return min
        }).reduce((a,b) => a+b, 0) 
        result = result !== Infinity ? result : -1
        return result
    })
}
profile
๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋‹ดํ•จ

0๊ฐœ์˜ ๋Œ“๊ธ€