
ํด๋ํฐ์ ์ํ์ ์ปดํจํฐ ํค๋ณด๋ ์ํ๊ณผ๋ ๋ค๋ฅด๊ฒ ํ๋์ ํค์ ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๊ฐ ํ ๋น๋ ์ ์์ต๋๋ค. ํค ํ๋์ ์ฌ๋ฌ ๋ฌธ์๊ฐ ํ ๋น๋ ๊ฒฝ์ฐ, ๋์ผํ ํค๋ฅผ ์ฐ์ํด์ ๋น ๋ฅด๊ฒ ๋๋ฅด๋ฉด ํ ๋น๋ ์์๋๋ก ๋ฌธ์๊ฐ ๋ฐ๋๋๋ค.
์๋ฅผ ๋ค์ด, 1๋ฒ ํค์ "A", "B", "C" ์์๋๋ก ๋ฌธ์๊ฐ ํ ๋น๋์ด ์๋ค๋ฉด 1๋ฒ ํค๋ฅผ ํ ๋ฒ ๋๋ฅด๋ฉด "A", ๋ ๋ฒ ๋๋ฅด๋ฉด "B", ์ธ ๋ฒ ๋๋ฅด๋ฉด "C"๊ฐ ๋๋ ์์ ๋๋ค.
๊ฐ์ ๊ท์น์ ์ ์ฉํด ์๋ฌด๋ ๊ฒ๋ ๋ง๋ ํด๋ํฐ ์ํ์ด ์์ต๋๋ค. ์ด ํด๋ํฐ ์ํ์ ํค์ ๊ฐ์๊ฐ 1๊ฐ๋ถํฐ ์ต๋ 100๊ฐ๊น์ง ์์ ์ ์์ผ๋ฉฐ, ํน์  ํค๋ฅผ ๋๋ ์ ๋ ์ ๋ ฅ๋๋ ๋ฌธ์๋ค๋ ๋ฌด์์๋ก ๋ฐฐ์ด๋์ด ์์ต๋๋ค. ๋, ๊ฐ์ ๋ฌธ์๊ฐ ์ํ ์ ์ฒด์ ์ฌ๋ฌ ๋ฒ ํ ๋น๋ ๊ฒฝ์ฐ๋ ์๊ณ , ํค ํ๋์ ๊ฐ์ ๋ฌธ์๊ฐ ์ฌ๋ฌ ๋ฒ ํ ๋น๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์ฌ์ง์ด ์์ ํ ๋น๋์ง ์์ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ช๋ช ๋ฌธ์์ด์ ์์ฑํ ์ ์์ ์๋ ์์ต๋๋ค.
์ด ํด๋ํฐ ์ํ์ ์ด์ฉํด ํน์  ๋ฌธ์์ด์ ์์ฑํ ๋, ํค๋ฅผ ์ต์ ๋ช ๋ฒ ๋๋ฌ์ผ ๊ทธ ๋ฌธ์์ด์ ์์ฑํ ์ ์๋์ง ์์๋ณด๊ณ ์ ํฉ๋๋ค.
1๋ฒ ํค๋ถํฐ ์ฐจ๋ก๋๋ก ํ ๋น๋ ๋ฌธ์๋ค์ด ์์๋๋ก ๋ด๊ธด ๋ฌธ์์ด๋ฐฐ์ด keymap๊ณผ ์
๋ ฅํ๋ ค๋ ๋ฌธ์์ด๋ค์ด ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด targets๊ฐ ์ฃผ์ด์ง ๋, ๊ฐ ๋ฌธ์์ด์ ์์ฑํ๊ธฐ ์ํด ํค๋ฅผ ์ต์ ๋ช ๋ฒ์ฉ ๋๋ฌ์ผ ํ๋์ง ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๋จ, ๋ชฉํ ๋ฌธ์์ด์ ์์ฑํ  ์ ์์ ๋๋ -1์ ์ ์ฅํฉ๋๋ค.
keymap์ ๊ธธ์ด โค 100keymap์ ์์์ ๊ธธ์ด โค 100keymap[i]๋ i + 1๋ฒ ํค๋ฅผ ๋๋ ์ ๋ ์์๋๋ก ๋ฐ๋๋ ๋ฌธ์๋ฅผ ์๋ฏธํฉ๋๋ค.keymap[0] = "ABACD" ์ธ ๊ฒฝ์ฐ 1๋ฒ ํค๋ฅผ ํ ๋ฒ ๋๋ฅด๋ฉด A, ๋ ๋ฒ ๋๋ฅด๋ฉด B, ์ธ ๋ฒ ๋๋ฅด๋ฉด A ๊ฐ ๋ฉ๋๋ค.keymap์ ์์์ ๊ธธ์ด๋ ์๋ก ๋ค๋ฅผ ์ ์์ต๋๋ค.keymap์ ์์๋ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.targets์ ๊ธธ์ด โค 100targets์ ์์์ ๊ธธ์ด โค 100targets์ ์์๋ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.| keymap | targets | result | 
|---|---|---|
| ["ABACD", "BCEFD"] | ["ABCD","AABB"] | [9, 4] | 
| ["AA"] | ["B"] | [-1] | 
| ["AGZ", "BSSS"] | ["ASA","BGZ"] | [4, 6] | 
์ ์ถ๋ ฅ ์ #1
"ABCD"์ ๊ฒฝ์ฐ,
"AABB"์ ๊ฒฝ์ฐ,
์ ์ถ๋ ฅ ์ #2
"B"์ ๊ฒฝ์ฐ, 'B'๊ฐ ์ด๋์๋ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ -1์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ์ฅํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
"ASA"์ ๊ฒฝ์ฐ,
"BGZ"์ ๊ฒฝ์ฐ,
ํด๋น ๋ฌธ์ ๋ 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
    })
}