[Algorithm] LeetCode Excel Sheet Column Number ๋ฌธ์ œ

Mooongsยท2022๋…„ 11์›” 1์ผ

๐Ÿ’ป Excel Column Number Question

๐Ÿ“ ๋ฌธ์ œ ์„ค๋ช…


์—‘์…€์˜ ์—ด์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž์—ด columnTitle์„ ์ธ์ž๋กœ ๋ฐ›์œผ๋ฉด ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ์ž‘์„ฑํ•˜๊ธฐ (LeetCode ๋งํฌ)

๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ์— ๋ณด๊ณ  1์‹œ๊ฐ„ ์ •๋„๋ฅผ ์˜ˆ์ƒํ–ˆ๋Š”๋ฐ ๋ฌธ์ž์—ด ๊ธธ์ด๊ฐ€ 2 ์ด์ƒ์ด ๋˜๋Š” ์ผ€์ด์Šค๋ถ€ํ„ฐ ๊ณ„์† ๋‹ต์ด ๊ทผ์‚ฌ์น˜๋กœ๋งŒ ๋‚˜์˜ค๋ฉด์„œ ์‚ฝ์งˆ์˜ ์—ฐ์†์„ ํ•˜๋‹ค๊ฐ€ ๋‘์‹œ๊ฐ„ ๋ฐ˜์ด ์†Œ์š”๋๋‹ค. ๋‚ด ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋‹ต ์—†์„ ๋ฌด โœ– ๊ทธ๋ž˜๋„ ์‹ค์ œ๋กœ charCodeAt() ๋ฉ”์„œ๋“œ๋ฅผ ์ฒ˜์Œ ํ™œ์šฉํ•ด๋ณธ ์ผ€์ด์Šค๋ผ ์žฌ๋ฏธ์žˆ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

My Solution

const titleToNumber = (columnTitle) => {
    let result = 0;
    let columnLength = 0; 

    for (let i = columnTitle.length - 1; i >= 0; i--) { // (1)
        result +=
            (columnTitle[i].charCodeAt() - 64) * Math.pow(26, columnLength);  // (2)

        columnLength++;  // (3)
    }

    return result;
};

๋จผ์ € ๋ณ€์ˆ˜ result๋Š” ์ˆซ์ž ๊ฒฐ๊ณผ ๊ฐ’์ด ๋”ํ•ด์งˆ ๋ณ€์ˆ˜์ด๊ณ , columnLength๋Š” ์ž๋ฆฟ์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ์นด์šดํŠธํ•ด์ค„ ๋ณ€์ˆ˜์ด๋‹ค. ์ฒซ ์ œ๊ณฑ์˜ ๊ฒฐ๊ณผ๊ฐ€ 1์ด ๋˜๋ ค๋ฉด ์ง€์ˆ˜๊ฐ€ 0์ด์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋กœ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š”๋ฐ ๋ณ€์ˆ˜๋ช…์€ length๋กœ ๋๋‚˜๋‹ˆ ์ž‘๋ช…์ด ๋„ˆ๋ฌด ์•„์‰ฝ๋‹ค. count๋‚˜ digitCount.....? ์ผ๋‹จ ์กฐ๊ฑด๋ฌธ ์ž์ฒด๊ฐ€ ๋” ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™์•„ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๋„˜์–ด๊ฐ”๋‹ค ใ„ฑ-

(1)์—์„œ ์ธ์ž๋กœ ๋ฐ›์€ columnTitle์„ ์ผ์˜ ์ž๋ฆฌ๋ถ€ํ„ฐ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ์—ญ์œผ๋กœ ๋„๋Š” ์กฐ๊ฑด๋ฌธ์„ ์ž‘์„ฑํ–ˆ๋‹ค.
(2)์—์„œ๋Š” ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜์”ฉ ๋Œ๋ฉด์„œ ์—‘์…€ ๋‹จ์œ„๋กœ ์น˜ํ™˜ํ•ด์ฃผ๋Š” ๊ณผ์ •์ด๋‹ค. ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž A์˜ ์•„์Šคํ‚ค์ฝ”๋“œ ๋ฒˆํ˜ธ๋Š” 65์ธ๋ฐ, ์—‘์…€์—๋Š” 1(= 65-64) ์ด๋ฏ€๋กœ charCodeAt() ๋ฉ”์„œ๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ์—์„œ 64๋ฅผ ๋นผ์ฃผ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ด์ด A-Z์—์„œ ๋‘์ž๋ฆฌ๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด ์ž๋ฆฟ์ˆ˜๋งˆ๋‹ค 26์˜ ์ œ๊ณฑ์„ ๊ณฑํ•ด์ค˜์•ผํ•˜๋ฏ€๋กœ Math.pow() ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ–ˆ๋‹ค.
(3)์—์„œ๋Š” ์ž๋ฆฟ์ˆ˜๋ฅผ ์ผ์˜ ์ž๋ฆฌ -> ์‹ญ์˜ ์ž๋ฆฌ -> ๋ฐฑ์˜ ์ž๋ฆฌ ์ด๋Ÿฐ ์‹์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์œ„ํ•ด ์ฆ๊ฐ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ

โœจ Top Rated Solution

const titleToNumber2 = (s) => {
    let result = 0;

    for (let i = 0; i < s.length; i++) {
        let char = s[s.length - 1 - i];

        result += Math.pow(26, i) * (char.charCodeAt() - 64);
    }

    return result;
};

๋‚ด ์ฝ”๋“œ๋Š” ์ž…๋ ฅ ๋ฐ›์€ ๋ฌธ์ž์˜ ๋๋ถ€ํ„ฐ ์—ญ์œผ๋กœ ์กฐ๊ฑด์ด ์ฐธ์ผ ๋•Œ ์‹คํ–‰๋  ์ฝ”๋“œ๋ฅผ ๋Œ๊ธฐ ์œ„ํ•ด ์กฐ๊ฑด์‹์ด ์กฐ๊ธˆ ์ง€์ €๋ถ„ํ•ด์กŒ๋‹ค๋Š” ์ ์ด ์•„์‰ฝ๊ณ  ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด columnLength์˜ ๋ณ€์ˆ˜๋ช…์ด๋‚˜ ํ˜น์‹œ ์ด ๋ถ€๋ถ„์„ ๋ณ€์ˆ˜ ์„ ์–ธ ์—†์ด ๋‹ค๋ฅธ ๋ถ„๋“ค์€ ์–ด๋–ป๊ฒŒ ํ’€์—ˆ์„์ง€ ๊ถ๊ธˆํ–ˆ๋Š”๋ฐ ์œ„์— ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋ฐ”๋กœ ์˜๋ฌธ์ด ํ•ด์†Œ๋˜์—ˆ๋‹ค.

์กฐ๊ฑด ๋‚ด์—์„œ ์—ญ์œผ๋กœ ๋„๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์กฐ๊ฑด๋ฌธ ๋‚ด์—์„œ๋งŒ ๋ฌธ์ž์—ด์„ ๋์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋–ผ์˜จ ๋’ค char ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž๋ฆฟ์ˆ˜ ์นด์šดํŠธ๋ฅผ ์œ„ํ•ด ๋”ฐ๋กœ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๋ฐ”๋กœ Math.pow()์˜ ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ i๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ์ฝ”๋“œ์ด๋‹ค. ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋กœ ํ• ๋‹นํ•˜์ง€ ์•Š๊ธฐ์— ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ณด๋‹ค ๊ณต๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋” ๋‚ฎ๋‹ค๋Š” ์ ๊ณผ ๋”ฑ๋ด๋„ ๊ฐ€๋…์„ฑ์ด ํ›จ์”ฌ ์ข‹๋‹ค๊ณ  ๋А๊ผˆ๋‹ค.


์ด๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์„ฌ์„ธํ•˜๋ฉด์„œ๋„ ๊ฐ€๋…์„ฑ ์ข‹๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์•„์ง ๋ฏธ์ˆ™ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋А๋ผ๊ณ  ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธด ํ–ˆ์ง€๋งŒ String.charCodeAt()์ด๋‚˜ Math.pow()๋ฅผ ํ™œ์šฉํ•ด์„œ ํ•ด๊ฒฐํ–ˆ๋‹ค๋Š” ์ ๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ ์‹ค์ œ๋กœ ํ™œ์šฉํ•ด๋ณด๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ํ•˜๋‚˜์”ฉ ํ€˜์ŠคํŠธ๋ฅผ ๊นจ๋Š” ๋А๋‚Œ์ด๋ผ ๋ฟŒ๋“ฏํ•จ์„ ๋А๊ผˆ๋˜ ๋ฌธ์ œ์˜€๋‹ค.

profile
#FE๊ฐœ๋ฐœ์ž๐Ÿฃ #์ƒˆ๋กœ์šด๊ฑด #์งœ๋ฆฟํ•ด

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