๐ŸŒ  ๋ฌธ์ œ

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

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

์—„์ง€์†๊ฐ€๋ฝ์€ ์ƒํ•˜์ขŒ์šฐ 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 ํ•จ์ˆ˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค.
  • ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋Š” ์ค‘์ฒฉ ๊ฐ€๋Šฅํ•˜๋‹ค

+ Recent posts