[Algorithm] LeetCode fizzBuzz 문제

MooongsΒ·2022λ…„ 10μ›” 25일

πŸ’» Fizz Buzz Question

πŸ“ 문제 μ„€λͺ…

1λΆ€ν„° NκΉŒμ§€μ˜ μˆ«μžμ—μ„œ 3의 λ°°μˆ˜λŠ” Fizz, 5의 λ°°μˆ˜λŠ” Buzz, λ‘˜ λ‹€ ν•΄λ‹Ήν•˜λ©΄ FizzBuzz인 λ°°μ—΄ λ°˜ν™˜ν•˜κΈ°

첫 μ½”λ“œ

λ§ˆμ§€λ§‰μ— λ¦¬ν„΄λ˜λŠ” λ°°μ—΄μ˜ μš”μ†Œ ν˜•νƒœκ°€ index + 1μ—μ„œ μ‹œμž‘ν•˜κΈ° λ•Œλ¬Έμ— [1, 2, 3...] 이런 μ‹μ˜ 배열을 λ§Œλ“€κΈ° μœ„ν•΄ Array.from() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜κ³  3의 배수, 5의 배수, 15의 λ°°μˆ˜λŠ” 각각의 쑰건문을 돌리며 찾은 λ’€ ν‚€μ›Œλ“œλ‘œ μΉ˜ν™˜ν–ˆλ‹€.

const fizzBuzz = (n) => {
    const arr = Array.from({ length: n }, (_, i) => i + 1);

    for (let i = 0; i < arr.length; i++) {
        if (arr[i] % 15 === 0) {
            arr[i] = "FizzBuzz";
        }
        if (arr[i] % 3 === 0) {
            arr[i] = "Fizz";
        }
        if (arr[i] % 5 === 0) {
            arr[i] = "Buzz";
        }
        arr[i] = arr[i].toString();
    }
    return arr;
};

λ‚΄ μ½”λ“œλ₯Ό μ œμΆœν•˜κ³ λ‚˜λ©΄ λ‹€λ₯Έ λΆ„λ“€μ˜ μ½”λ“œλž‘ λΉ„κ΅ν•˜λŠ” 편인데 이 과정이 제일 μž¬λ―Έμžˆλ‹€. 가끔 μ•„μ˜ˆ μ²˜μŒλ³΄λŠ” μ½”λ“œλ₯Ό λ°œκ²¬ν•  λ•Œλ„ 있고 (μ΅œκ·Όμ—λŠ” XOR μ—°μ‚°μžλ₯Ό μ΄λ ‡κ²Œ μ•Œκ²Œ 되..μ—ˆμ§€λ§Œ 아직 쓰기에 λ°λ©΄λ°λ©΄ν•œ μƒνƒœ) 보톡은 λ‚΄ μ½”λ“œλ³΄λ‹€ 더 κ°„κ²°ν•œ μ½”λ“œλ“€μ΄ 많기 λ•Œλ¬Έμ— 이 비ꡐ κ³Όμ •μ—μ„œ 더 곡뢀가 λ˜λŠ” 것 같기도 ν•˜λ‹€. μ•„λž˜ μ½”λ“œλŠ” μž‘λ™ 방식은 λΉ„μŠ·ν•œλ° μ•„μ˜ˆ 빈 배열을 λ§Œλ“€κ³  λ°˜λ³΅λ¬Έμ„ 돌며 숫자, ν‚€μ›Œλ“œλ₯Ό μ‚½μž…ν•˜λŠ” 방법인데 쑰건문 λ‹Ή μ½”λ“œ λΈ”λŸ­μ΄ μ—†μ–΄μ„œ κ·ΈλŸ°μ§€ 더 가독성이 (λ‚΄ 것보닀) μ’‹μ•„λ³΄μ—¬μ„œ μ‚΄νŽ΄λ΄€λ‹€.

const fizzBuzz = (n) => {
    const result = [];
    for (let i = 1; i <= n; i++) {
        if (i % 5 === 0 && i % 3 === 0) result.push("FizzBuzz");
        else if (i % 3 === 0) result.push("Fizz");
        else if (i % 5 === 0) result.push("Buzz");
        else result.push(i.toString());
    }
    return result;
};

✨Top rated solution

μ§„μ§œ 깔끔........ map λ©”μ„œλ“œλ₯Ό μ €λ ‡κ²Œ μ¦κ°μ—°μ‚°μž, μ‚Όν•­ μ—°μ‚°μžλž‘ 같이 μ‚¬μš©ν•˜λŠ” 방식은 생각도 λͺ»ν–ˆλ‹€. ν•˜λ‚˜μ”© λœ―μ–΄λ³΄λ©΄μ„œ κ³΅λΆ€ν•˜λ‹€κ°€ μ¦κ°μ—°μ‚°μžμ˜ μœ„μΉ˜μ˜ μ€‘μš”μ„±μ„ λ‹€μ‹œ ν•œλ²ˆ κΉ¨λ‹«κ²Œ λ˜μ—ˆλ‹€. map λ‚΄ 콜백 ν•¨μˆ˜μ—μ„œ 각각의 인덱슀 iκ°€ ν˜„μž¬ 0λΆ€ν„° μ‹œμž‘ν•˜κΈ° λ•Œλ¬Έμ— 1μ”© λ¨Όμ € μ¦κ°μ‹œν‚€κ³  λ‚˜λ¨Έμ§€λ₯Ό ν™•μΈν•˜λŠ” 연산이 이어지기 λ•Œλ¬Έμ— μ—¬κΈ°μ„œλŠ” ν›„μœ„(i++)κ°€ μ•„λ‹Œ μ „μœ„(++i) μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

const fizzBuzz = (n) => {
    return new Array(n)
        .fill(0)
        .map(
            (a, i) => (++i % 3 ? "" : "Fizz") + (i % 5 ? "" : "Buzz") || "" + i
        );
};
profile
#FE개발자🐣 #μƒˆλ‘œμš΄κ±΄ #μ§œλ¦Ών•΄

0개의 λŒ“κΈ€