1~3999
์ฌ์ด์ ๋ก๋ง์s
๋ฅผ ์ธ์๋ก ์ฃผ๋ฉด ๊ทธ์ ํด๋นํ๋ ์ซ์๋ฅผ ๋ฐํํด์ฃผ์ธ์. ๋ก๋ง ์ซ์๋ฅผ ์ซ์๋ก ํ๊ธฐํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000
๋ก๋ง์๋ฅผ ์ซ์๋ก ์ฝ๋ ๋ฐฉ๋ฒ์ ๋ก๋ง์๋ฅผ ์ผ์ชฝ๋ถํฐ ์ฐจ๋ก๋๋ก ๋ํ๋ฉด ๋ฉ๋๋ค.
III = 3
XII = 12
XXVII = 27
์ ๋๋ค.
๊ทธ๋ฐ๋ฐ 4๋ฅผ ํํํ ๋๋IIII
๊ฐ ์๋๋ผIV
์ ๋๋ค. ๋ค์ ์ซ์์์ ์์ ์ซ์๋ฅผ ๋นผ์ฃผ๋ฉด ๋ฉ๋๋ค. 9๋IX
์ ๋๋ค.
I๋ V์ X์์ ์์4
,9
X๋ L, C์์ ์์40
,90
C๋ D, M์์ ์์400
,900
๐ก My Solution
function romanToNum(s) {
let romanNum = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000
}
let result = 0;
for(let i = 0; i < s.length; i++) { // s์ ๊ธธ์ด๋งํผ ์ํํ๋ฉด์
if(romanNum[s[i]] < romanNum[s[i+1]]) { // ์์ ์ซ์๊ฐ ๋ค์ ์ซ์๋ณด๋ค ์์ผ๋ฉด (ex. I(1) < V(4))
result += romanNum[s[i+1]] - romanNum[s[i]]; // ๋ค์ ์ซ์์์ ์์ ์ซ์๋ฅผ ๋บธ ๊ฐ์ result์ ๋ํด์ค๋ค.
i++; // ๊ทธ๋ฆฌ๊ณ ํ ์นธ ๊ฑด๋๋ด๋ค. (ex. XIVX์ 'IV'. IV๋ I์ V์ฒ๋ผ ๋ฐ๋ก๊ฐ ์๋๊ณ IV๊ฐ ํ๋์ ๋ก๋ง์๋ก 4์ด๊ธฐ ๋๋ฌธ!)
} else { // ๊ทธ ์ธ์๋
result += romanNum[s[i]]; // ๊ทธ๋ฅ ๋ํ๋ค! (ex. XXIV์ X์ X. ๊ทธ๋ฅ X(10) + X(10) ๋ํด์ฃผ๋ฉด ๋จ!)
}
}
return result;
}
romanToNum('XIVX');
4์ 9์ผ ๊ฒฝ์ฐ๋ if๋ฌธ์, ๋๋จธ์ง ๊ฒฝ์ฐ๋ else๋ก ๋๋ ธ๋ค
์ด๋ ต๋ค ใ
ใ