
์์
์ ์ด์ ํด๋นํ๋ ๋ฌธ์์ด columnTitle์ ์ธ์๋ก ๋ฐ์ผ๋ฉด ํด๋นํ๋ ์ซ์๋ก ๋ฐํํด์ฃผ๋ ํจ์ ์์ฑํ๊ธฐ (LeetCode ๋งํฌ)
๋ฌธ์ ๋ฅผ ์ฒ์์ ๋ณด๊ณ 1์๊ฐ ์ ๋๋ฅผ ์์ํ๋๋ฐ ๋ฌธ์์ด ๊ธธ์ด๊ฐ 2 ์ด์์ด ๋๋ ์ผ์ด์ค๋ถํฐ ๊ณ์ ๋ต์ด ๊ทผ์ฌ์น๋ก๋ง ๋์ค๋ฉด์ ์ฝ์ง์ ์ฐ์์ ํ๋ค๊ฐ ๋์๊ฐ ๋ฐ์ด ์์๋๋ค. ๋ด ์๊ฐ ๋ณต์ก๋ ๋ต ์์ ๋ฌด โ ๊ทธ๋๋ ์ค์ ๋ก charCodeAt() ๋ฉ์๋๋ฅผ ์ฒ์ ํ์ฉํด๋ณธ ์ผ์ด์ค๋ผ ์ฌ๋ฏธ์๊ฒ ํ ์ ์์๋ค.
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)์์๋ ์๋ฆฟ์๋ฅผ ์ผ์ ์๋ฆฌ -> ์ญ์ ์๋ฆฌ -> ๋ฐฑ์ ์๋ฆฌ ์ด๋ฐ ์์ผ๋ก ๋์ด๊ฐ๊ธฐ ์ํด ์ฆ๊ฐ ์ฐ์ฐ์ ์ฌ์ฉ
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()๋ฅผ ํ์ฉํด์ ํด๊ฒฐํ๋ค๋ ์ ๊ณผ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์์ ์ค์ ๋ก ํ์ฉํด๋ณด๋ ๋ฉ์๋๊ฐ ๋์ด๋ ์๋ก ํ๋์ฉ ํ์คํธ๋ฅผ ๊นจ๋ ๋๋์ด๋ผ ๋ฟ๋ฏํจ์ ๋๊ผ๋ ๋ฌธ์ ์๋ค.