ν”„μ—” 곡뢀/🫧 μ•Œκ³ λ¦¬μ¦˜ 곡뢀

[μ•Œκ³ λ¦¬μ¦˜ || ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] ν‚€νŒ¨λ“œ λˆ„λ₯΄κΈ°, μ •κ·œμ‹ test() ν•¨μˆ˜ (feat.λΉ„λ‚œλ‹˜μ˜ μ½”λ“œλ¦¬λ·°)

λ˜μžπŸ‹ 2023. 7. 28. 09:44
728x90

μ˜€λŠ˜λ„ ν•  수 μžˆλŠ” 것듀을 μˆœμ„œλŒ€λ‘œ λ¨Όμ € λ‚˜μ—΄ν•΄λ΄€λ‹€.

 

function solution(numbers, hand) {
    const click = [];
    const keypad = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9],
        ['*', 0, '#']
    ]
    const findKey = (n) => {
        let result = [];
        keypad.forEach((line, i) => {
            if (line.findIndex(v => v === n) !== -1) {
                result = [i, line.findIndex(v => v === n)];
                return;
            }
        })
        return result;
    }

    let [leftNow, rightNow] = [[3, 0], [3, 2]];
    numbers.forEach(n => {
        const left = [1, 4, 7];
        const right = [3, 6, 9];
        const leftFn = () => {
            click.push("L");
            leftNow = nPosition;
        }
        const rightFn = () => {
            click.push("R");
            rightNow = nPosition;
        }
        let nPosition = findKey(n);

        if (left.includes(n)) {
            leftFn();
        }
        else if (right.includes(n)) {
            rightFn();
        }
        else {
            let distance = (nowPosition) => Math.abs(nPosition[0] - nowPosition[0]) + Math.abs(nPosition[1] - nowPosition[1])
            const leftD = distance(leftNow);
            const rightD = distance(rightNow);
            if (leftD === rightD) {
                hand === "left" ? leftFn() : rightFn();
            } else {
                leftD < rightD ? leftFn() : rightFn();
            }
        }
    });
    return click.join("")
}

 

left, right λ°°μ—΄μ—μ„œ findIndex ν•˜λŠ” 뢀뢄은 μ •κ·œμ‹μœΌλ‘œ λ°”κΏ€ 수 μžˆλ‹€.

 

       if (/[147]/.test(x)) {
            leftFn();
        }
      if (/[369]/.test(x)) {
            rightFn();
        }

 

μ²˜μŒμ— test ν•¨μˆ˜κ°€ μž‘μ„±ν•œ μ‚¬λžŒμ΄ λ§Œλ“  μž„μ˜μ˜ ν•¨μˆ˜μΈ 쀄 μ•Œμ•˜λŠ”λ°, 

μ•Œκ³ λ³΄λ‹ˆ μ •κ·œμ‹ κ³ μ°¨ν•¨μˆ˜μ˜€λ‹€...!!

와!

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

 

RegExp.prototype.test() - JavaScript | MDN

test() λ©”μ„œλ“œλŠ” 주어진 λ¬Έμžμ—΄μ΄ μ •κ·œ ν‘œν˜„μ‹μ„ λ§Œμ‘±ν•˜λŠ”μ§€ νŒλ³„ν•˜κ³ , κ·Έ μ—¬λΆ€λ₯Ό true λ˜λŠ” false둜 λ°˜ν™˜ν•©λ‹ˆλ‹€.

developer.mozilla.org

 

test() λ©”μ„œλ“œλŠ” 주어진 λ¬Έμžμ—΄μ΄ μ •κ·œ ν‘œν˜„μ‹μ„ λ§Œμ‘±ν•˜λŠ”μ§€ νŒλ³„ν•˜κ³ , κ·Έ μ—¬λΆ€λ₯Ό true λ˜λŠ” false둜 λ°˜ν™˜ν•©λ‹ˆλ‹€.

λ§Œμ‘±ν•œλ‹€λŠ” 건 -> μ •κ·œ ν‘œν˜„μ‹μ΄ μΌμΉ˜ν•˜λŠ” 뢀뢄이 μžˆλŠ”κ°€λ₯Ό μ˜λ―Έν•œλ‹€.

 

μ΄λ ‡κ²Œ 쒋은 ν•¨μˆ˜λ₯Ό 이제 μ•Œμ•˜λ‹€λ‹ˆ

μ—­μ‹œ mdn 은 꼼꼼히 λ³Ό 수둝 이득이당

 

 

 

 

두ꡬ두ꡬ 그리고 μ˜€λžœλ§Œμ— λΉ„λ‚œλ‹˜μ΄ μ½”λ“œ 리뷰λ₯Ό ν•΄μ£Όμ…¨λ‹€.

μ™œμΈμ§€ 갈 수둝 κΌΌκΌΌν•˜κ²Œ ν•΄μ£Όμ‹œλŠ”κ±° κ°™μ•„μ„œ λ„ˆλ¬΄ κ°μ‚¬ν•˜λˆΌ....

κ³ μŠ€λž€νžˆ ν‘μˆ˜ν•˜λ©΄ μ–Όλ§ˆλ‚˜ μ’‹μ„κΉŒ!

 

 

μ•ˆλ…•ν•˜μ„Έμš” λ˜μžλ‹˜ ν•΄λ‹Ή μ½”λ“œ 리뷰λ₯Ό μ‹œμž‘ν•˜κ² μŠ΅λ‹ˆλ‹€.

λ¨Όμ € κΈ°λŠ₯에 λŒ€ν•œ μ½”λ“œλ₯Ό λΆ„μ„ν•˜κΈ° 전에 μ½”λ“œ μŠ€νƒ€μΌλΆ€ν„° μ κ²€ν•˜κ² μŠ΅λ‹ˆλ‹€.

λ§ˆμΉ¨ν‘œ μ’…κ²°ν‘œ 세미클둠을 μƒλž΅ μ—¬λΆ€λ₯Ό μΌκ΄€λ˜κ²Œ ν•΄μ•Όν•©λ‹ˆλ‹€.

μ œμΆœν•œ μ½”λ“œλŠ”  distance ν•¨μˆ˜λ§Œ 세미클둠을 μƒλž΅ν•˜κ³  λ‚˜λ¨Έμ§€ μ½”λ“œλŠ” 세미클둠을 λΆ™μ˜€μŠ΅λ‹ˆλ‹€. λ¬Όλ‘  쀑간에 μƒλž΅μ„ ν•˜λ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„μ—μ„œ μžλ™μœΌλ‘œ 세미클둠을 λΆ™μ—¬μ£ΌλŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ²Œ λ©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μΌκ΄€λœ λ°©μ‹μœΌλ‘œ 톡일을 ν•΄μ•Ό μ½”λ“œμ˜ 가독성을 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ•—... μ„Έλ―Έμ½œλ‘  μ œλŒ€λ‘œ λΆ™μ΄λŠ”μ§€λ„ λ³΄μ‹œλ‹€λ‹ˆ λΉ„λ‚œλ‹˜μ€ μ—­μ‹œ GPT μ•„λ‹κΉŒ...?

 

γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹

이건 걍 μ›ƒκ²¨μ„œ κ°€μ Έμ˜΄

 

λ„˜λ‚˜ 친절.....

 

 

 

그리고 이제 μ½”λ“œμ— λŒ€ν•œ κΈ°λŠ₯ 뢀뢄을 μ κ²€ν•˜κ² μŠ΅λ‹ˆλ‹€.

λ¨Όμ € 기쑴의 findKey ν•¨μˆ˜λŠ” forEachλ₯Ό μ‚¬μš©ν•˜μ—¬ ν‚€νŒ¨λ“œμ˜ 각 행을 μˆœνšŒν•˜λ©΄μ„œ, 
숫자 n이 μžˆλŠ” 행을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. 이 λ•Œ findIndex λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ ν–‰ λ‚΄μ—μ„œ n의 μœ„μΉ˜λ₯Ό μ°Ύμ•˜κ³ , n이 있으면 n의 μœ„μΉ˜λ₯Ό 결과에 μ €μž₯ν–ˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ findIndexλ₯Ό λ‘λ²ˆ ν˜ΈμΆœν•˜λ―€λ‘œ λΉ„νš¨μœ¨μ μΌ 수 μžˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ λ‹€μŒκ³Ό 같이 findIndexλ₯Ό ν•œλ²ˆλ§Œ ν˜ΈμΆœν•˜λŠ” 것을 μΆ”μ²œν•©λ‹ˆλ‹€.

const findPosition = n => keypad.reduce((acc, row, i) => row.includes(n) ? [i, row.indexOf(n)] : acc, []);

λ¦¬νŒ©ν† λ§λœ findPosition ν•¨μˆ˜μ—μ„œλŠ” reduce λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 같은 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. 
reduce λ©”μ„œλ“œλŠ” λ°°μ—΄μ˜ 각 μš”μ†Œμ— λŒ€ν•΄ 주어진 콜백 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜λ©΄μ„œ, λˆ„μ κ°’μ„ 결과둜 λ°˜ν™˜ν•©λ‹ˆλ‹€. 
이 λ•Œ 콜백 ν•¨μˆ˜λŠ” ν˜„μž¬ μš”μ†Œκ°€ n을 ν¬ν•¨ν•˜κ³  μžˆλŠ”μ§€ ν™•μΈν•˜κ³ , n이 있으면 n의 μœ„μΉ˜λ₯Ό λ°˜ν™˜ν•˜κ±°λ‚˜,
그렇지 μ•ŠμœΌλ©΄ λˆ„μ κ°’μ„ κ·ΈλŒ€λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 방식은 findIndexλ₯Ό λ‘λ²ˆ ν˜ΈμΆœν•˜λŠ” 것을 ν”Όν•˜κ³  includes와 indexOfλ₯Ό 각각 ν•œλ²ˆ μ”© μ‚¬μš©ν•˜μ—¬
ν˜Έμœ¨μ„±μ„ λ†’μ˜€μŠ΅λ‹ˆλ‹€. 그리고 기쑴의 ν•¨μˆ˜μ˜ 이름 keyλŠ” 객체λ₯Ό μ˜λ―Έν•  수 있으며  λΆˆλΆ„λͺ…ν•©λ‹ˆλ‹€.

ν•¨μˆ˜κ°€ ν•˜λŠ”μΌμ„ μ‰½κ²Œ 이해할 수 μžˆλŠ” μ΄λ¦„μœΌλ‘œ λ°”κΏ”μ•Όν•©λ‹ˆλ‹€. 
μœ„μΉ˜λ₯Ό μ°ΎλŠ” ν•¨μˆ˜μ΄κΈ° λ•Œλ¬Έμ—  λ¦¬νŒ©ν† λ§ 된 ν•¨μˆ˜μ˜ 이름이 μ μ ˆν•©λ‹ˆλ‹€.

 

흠 이게 무슨 말일까

γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹

 

μ΄ν•΄ν•˜κ³  잘λͺ» μ΄ν•΄ν•œ 쀄 데헷

 

이 ν•¨μˆ˜λŠ” keypad의 각 μš”μ†Œ (즉, 각 ν–‰)에 λŒ€ν•΄ 콜백 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. 
콜백 ν•¨μˆ˜λŠ” 두 개의 λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 첫 번째 λ§€κ°œλ³€μˆ˜λŠ” λˆ„μ κ°’ (acc)이며, 
μ΄ˆκΈ°κ°’μ€ 빈 λ°°μ—΄ []μž…λ‹ˆλ‹€. 두 번째 λ§€κ°œλ³€μˆ˜λŠ” ν˜„μž¬ μš”μ†Œ (즉, ν˜„μž¬ ν–‰)μž…λ‹ˆλ‹€.

콜백 ν•¨μˆ˜λŠ” ν˜„μž¬ 행이 n을 ν¬ν•¨ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 
λ§Œμ•½ n을 ν¬ν•¨ν•˜λ©΄, 콜백 ν•¨μˆ˜λŠ” n의 μœ„μΉ˜ ([i, row.indexOf(n)])λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 
이 μœ„μΉ˜λŠ” λ‹€μŒ λ°˜λ³΅μ—μ„œμ˜ λˆ„μ κ°’μ΄ λ©λ‹ˆλ‹€.

λ§Œμ•½ ν˜„μž¬ 행이 n을 ν¬ν•¨ν•˜μ§€ μ•ŠμœΌλ©΄, 콜백 ν•¨μˆ˜λŠ” λˆ„μ κ°’μ„ κ·ΈλŒ€λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€. 
즉, λˆ„μ κ°’μ€ 이전 ν–‰μ—μ„œ 찾은 n의 μœ„μΉ˜λ₯Ό μœ μ§€ν•˜κ±°λ‚˜, 
아직 n을 찾지 λͺ»ν–ˆλ‹€λ©΄ 빈 λ°°μ—΄ []을 μœ μ§€ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ reduce ν•¨μˆ˜λŠ” keypad의 λͺ¨λ“  행을 μˆœνšŒν•˜λ©΄μ„œ n의 μœ„μΉ˜λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€. 
λ§Œμ•½ n을 찾으면 κ·Έ μœ„μΉ˜λ₯Ό λ°˜ν™˜ν•˜κ³ , n을 찾지 λͺ»ν•˜λ©΄ 빈 λ°°μ—΄ []을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

 

마이 브레인 λ§žμΆ€ν˜• μ„€λͺ…..... κ°μ‚¬ν•˜λ‹€....

 

 

 

μ€‘λ³΅μ½”λ“œμ œκ±°ν•˜κΈ°

leftFn κ³Ό rightFn
기쑴의 μ½”λ“œλŠ” leftFnκ³Ό rightFn을 λ”°λ‘œ μ •μ˜ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
ν•΄λ‹Ή ν•¨μˆ˜μ˜ λ‚΄μš©μ€ μž…λ ₯κ°’λ§Œ λ‹€λ₯ΌλΏ ν•˜λŠ”μΌμ΄ 같은 ν•¨μˆ˜μž…λ‹ˆλ‹€.
κ·ΈλŸ¬λ―€λ‘œ ν•΄λ‹Ή ν•¨μˆ˜λŠ” 쀑볡을 μ€„μ—¬μ•Όν•©λ‹ˆλ‹€.

distance ν•¨μˆ˜
기쑴의 μ½”λ“œλŠ” forEach μ•ˆμ—μ„œ 쑰건문λ₯Ό 톡해 거리 ν•¨μˆ˜λ₯Ό μ •μ˜ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

기쑴의 μ½”λ“œ if 와 else ifλŠ” "L" λ˜λŠ” "R"λ₯Ό μ΄μš©ν•˜κ³  μœ„μΉ˜λ₯Ό λŒ€μž…ν•©λ‹ˆλ‹€.

ν•˜μ§€λ§Œ distance ν•¨μˆ˜κ°€ μ •μ˜λœ else 문을 보면 if 와 else...if와 λ‹€λ₯΄κ²Œ 
좔가적인 거리 ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λ©° μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ‘°κ±΄λ¬Έμ—μ„œ else문만 ν•¨μˆ˜λ₯Ό μ •μ˜λ₯Ό ν•˜κ³  μžˆκΈ°λ•Œλ¬Έμ—

이전에 올린 λ¦¬νŒ©ν† λ§λœ ν•¨μˆ˜ (findPostion)와 같은 μŠ€μ½”ν”„μ— μœ„μΉ˜ν•˜λŠ” 것이 μ μ ˆν•©λ‹ˆλ‹€.

const findPosition = n => keypad.reduce((acc, row, i) => row.includes(n) ? [i, row.indexOf(n)] : acc, []);
const distance = (p1, p2) => Math.abs(p1[0] - p2[0]) + Math.abs(p1[1] - p2[1]);


즉 μ‘°κ±΄λ¬Έμ•ˆμ— ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜μ§€ 말고 forEach λ¬Έ λ°–μ—μ„œ μ •μ˜ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

 

였호... 

κ·ΈλŸ¬λ‹ˆκΉŒ else if λ¬Έ μ•ˆμ—μ„œ ν•¨μˆ˜λ₯Ό μ •μ˜ ν–ˆλŠ”λ°, ...

이 λΆ€λΆ„ μž‘μ„±ν•  λ•Œ else λ¬Έμ—μ„œλ§Œ μ“°λ‹ˆκΉŒ else λ¬Έ μ•ˆμ— 넣어야지~ ν•˜κ³  쓴건데

 


쑰건문 μ „μ²΄μ˜ 흐름..? λ•Œλ¬Έμ— 쑰건문 λ°–μ—μ„œ μ“°λŠ” 게 μ μ ˆν•˜λ‹€κ³  μ΄ν•΄ν•˜λ©΄ λ˜λŠ”κ±ΈκΉŒ??

 

 

μ΅œμ’… μˆ˜μ •λœ λ¦¬νŒ©ν† λ§ μ½”λ“œ
const solution = (numbers, hand) => {
    const keypad = [[1, 2, 3], [4, 5, 6], [7, 8, 9], ['*', 0, '#']];
    let [left, right] = [[3, 0], [3, 2]];
    const findPosition = n => keypad.reduce((acc, row, i) => row.includes(n) ? [i, row.indexOf(n)] : acc, []);
    const distance = (p1, p2) => Math.abs(p1[0] - p2[0]) + Math.abs(p1[1] - p2[1]);

    return numbers.map(n => {
        const pos = findPosition(n);
        const [leftKeys, rightKeys] = [[1, 4, 7], [3, 6, 9]];

        if (leftKeys.includes(n)) {
            left = pos;
            return 'L';
        } else if (rightKeys.includes(n)) {
            right = pos;
            return 'R';
        } else {
            const [leftDist, rightDist] = [distance(left, pos), distance(right, pos)];
            const result = leftDist < rightDist || (leftDist === rightDist && hand === 'left') ? 'L' : 'R';
            result === 'L' ? left = pos : right = pos;
            return result;
        }
    }).join('');
}

 

ꡬ쑰 λΆ„ν•΄ ν• λ‹Ή 문법 μ‚¬μš©ν•˜κΈ°
const left = [1, 4, 7];
const right = [3, 6, 9];

μœ„μ˜ μ½”λ“œλŠ” 기쑴의 μ½”λ“œμž…λ‹ˆλ‹€. left rightλ³€μˆ˜λŠ” μ„œλ‘œ 연관이 μžˆλŠ” λ°°μ—΄μž…λ‹ˆλ‹€. λ‹€μŒκ³Ό 같이 λ°”κΏ€μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 const [leftKeys, rightKeys] = [[1, 4, 7], [3, 6, 9]];

 

3.
기쑴의 μ½”λ“œλŠ” 쑰건문을 톡해 "L"κ³Ό "R"을 click 배열에 μ €μž₯ν•˜κ³   ν˜„μž¬ μœ„μΉ˜λ₯Ό κ°±μ‹ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 
그리고 같은 일을 ν•œλ‹€λŠ” 것을  μ•Œλ¦¬κΈ° μœ„ν•΄ leftFn, rightFn ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λŠ”κ²ƒμ€ 
쀑볡을 쀄일 수 μžˆμ–΄μ„œ 쒋은 μ ‘κ·Όμž…λ‹ˆλ‹€.

 const leftFn = () => {
            click.push("L");
            leftNow = nPosition;
}
const rightFn = () => {
            click.push("R");
            rightNow = nPosition;
 }


λ‹€λ§Œ  ν•΄λ‹Ή ν•¨μˆ˜λ“€μ€ μ„œλ‘œ 같은 일을 ν•˜κ³  그리고 ν•¨μˆ˜μ˜ 일이 맀우 μ§§μŠ΅λ‹ˆλ‹€. 
그리고 ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό 쀑볡을 묢을 만큼 μ‘°κ±΄λ¬Έμ•ˆμ— 두가지 일을 ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ ν•¨μˆ˜λ₯Ό λ§Œλ“€μ§€ μ•Šκ³  쑰건문을 보닀 κ°„κ²°ν•˜κ²Œ 지수 μžˆμŠ΅λ‹ˆλ‹€. 
특히 else 문을 λ³΄μ‹œλ©΄ 두 ν•¨μˆ˜μ˜ λ‚΄μš©μ„ 쑰건문 λ‚΄λΆ€λ‘œ 직접 μ΄λ™μ‹œμΌœ μ€‘λ³΅μ½”λ“œλ₯Ό μ œκ±°ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

if (leftKeys.includes(n)) {
  left = pos;
  return 'L';
} else if (rightKeys.includes(n)) {
  right = pos;
  return 'R';
} else {
  const [leftDist, rightDist] = [distance(left, pos), distance(right, pos)];
  const result = leftDist < rightDist || (leftDist === rightDist && hand === 'left') ? 'L' : 'R';
  result === 'L' ? left = pos : right = pos;

 

4.
그리고 else 문에 있던 λ³΅μž‘ν•œ 쑰건문을 κ°„κ²°μ‹œμΌ°μŠ΅λ‹ˆλ‹€.

기쑴의 μ½”λ“œ
else {
  let distance = (nowPosition) => Math.abs(nPosition[0] - nowPosition[0]) + Math.abs(nPosition[1] - nowPosition[1])
  const leftD = distance(leftNow);
  const rightD = distance(rightNow);
  if (leftD === rightD) {
    hand === "left" ? leftFn() : rightFn();
  } else {
    leftD < rightD ? leftFn() : rightFn();
  }
}


λ¦¬νŒ©ν† λ§ν•œ μ½”λ“œ
else {
  const [leftDist, rightDist] = [distance(left, pos), distance(right, pos)];
  const result = leftDist < rightDist || (leftDist === rightDist && hand === 'left') ? 'L' : 'R';
  result === 'L' ? left = pos : right = pos;
  return result;
}

 

μΊ¬ μ‚Όν•­μ—°μ‚°μžλž‘ λ…Όλ¦¬μ—°μ‚°μž λ₯Ό μ΄μš©ν•΄μ„œ μ €λ ‡κ²Œ κ°„λ‹¨ν•˜κ²Œ λ§Œλ“€ 수 μžˆκ΅¬λ‚˜...! 

λ‚˜λŠ” 같은 κ²½μš°λž‘ λ‹€ λ”°λ‘œ ν•΄λŠ”λ°, 

|| 뒀에 같은 κ²½μš°λ„ ν•΄λ‹Ήλ˜λ‹ˆκΉŒ κ·Έ 이후에 λ§žμΆ°μ„œ λ‹€μ‹œ L 을 좜λ ₯할지 R 을 좜λ ₯할지λ₯Ό κ²°μ •ν•  수 있ꡰ..!

L, R 에 λŒ€ν•΄μ„œ λ¨Όμ € 결둠을 내리고, 그에 따라 pos (μ’Œν‘œ) λ₯Ό λ„£μ–΄μ€€λ‹€. 

그리고 L 인지 R 인지 return 해버림. 

 

 

λ§ˆμ§€λ§‰μœΌλ‘œ forEach 보닀 map ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 각 μˆ«μžμ— λŒ€ν•œ 클릭 κ²°κ³Όλ₯Ό μ¦‰μ‹œ λ³€ν™˜μ„ μ‹œμΌœ 
click μ΄λΌλŠ” 배열을 직접 μ •μ˜ν•  ν•„μš”κ°€ μ—†μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.

 μ˜€... μ–΄μ°¨ν”Ό 배열을 λ§Œλ“€κ±°λ‹ˆκΉŒ map 을 μ΄μš©ν•΄μ„œ 퉀퉀 ν•œ λ°°μ—΄ 자체λ₯Ό join("") ν•œ 값을 return ν•˜λ©΄ λ˜κ² κ΅¬λ‚˜...!

 

전체 μ‹μ—μ„œ return ν•΄μ•Όν•˜λŠ” 값이 배열이라면 map 이 μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•œλ‹€λŠ” κ±Έ μ΄μš©ν•˜λ©΄ λͺ¬κ°€ 멋진 μ½”λ“œλ₯Ό 지 수 있ꡰ!

 

 

 

 

 

곡뢀 λ‹€ ν–ˆμœΌλ‹ˆ λ‹€μ‹œ 짜보자..!!

 

 

 

 

728x90
λ°˜μ‘ν˜•