Miyeon

#49 Roman to Integer

2021-07-14Algorithm

๐Ÿ”ฅ Roman to Integer ๐Ÿ”ฅ

Roman symbols

Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

Example 1:

Input: s = "III";
Output: 3;

Example 2:

Input: s = "IX";
Output: 9;

Example 3:

Input: s = "LVIII";
Output: 58;
Explanation: (L = 50), (V = 5), (III = 3);

Example 4:

Input: s = "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.

์ฒดํฌํ•  ๋ถ€๋ถ„

  • ๋ฌธ์ž์˜ ์ˆซ์ž๊ฐ’์ธ cur, next ๋น„๊ตํ•ด์„œ add / subtract ๊ฒฐ์ •ํ•˜๊ธฐ
  • ์กฐ๊ฑด๋ฌธ ํ•„์š”
  • ๋ฐ˜๋ณต๋ฌธ ํ•„์š”

์ฝ”๋“œ ์ž‘์„ฑ

function romanToInt(s) {
  const key = {
    I: 1,
    V: 5,
    X: 10,
    L: 50,
    C: 100,
    D: 500,
    M: 1000
  };

  let result = [];

  for (let i = 0; i < s.length; i++) {
    if (key[s[i]] < key[s[i + 1]]) {
      result.push(key[s[i + 1]] - key[s[i]]);
      i++;
      continue;
    } else {
      result.push(key[s[i]]);
    }
  }

  return result.reduce((prev, current) => prev + current);
}

๋˜ ๋‹ค๋ฅธ ์ ‘๊ทผ๋ฒ•

function romanToInt(s) {
  const key = {
    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++) {
    const cur = key[s[i]];
    const next = key[s[i + 1]];

    if (cur < next) {
      result += next - cur;
      i++;
    } else {
      result += cur;
    }
  }

  return result;
}

WILT : What I Learned Today ๐Ÿค”

  • ๋ชจ๋“  ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ž‘์—…ํ•˜๋‹ˆ๊นŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์› ๋‹ค. ๊ฒฐ๊ตญ ํ˜ผ์ž ์ž‘์„ฑํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ—ค์„œ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ ์˜ˆ์™ธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋‹ˆ ๊ทธ ์™ธ์˜ ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ๋ฌด์ฒ™ ์‰ฌ์› ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์€๋ฐ ์ƒ๊ฐ์ด ๋“ค๋ฉด baby step์œผ๋กœ ๊ธฐ๋กํ•˜๊ณ , ๋” ๋‹จ์ˆœํ•˜๊ณ  ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์—†์„์ง€ ๊ณ ๋ฏผํ•ด๋ณด์ž
  • continue์™€ break์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค
break๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒ
continueํ˜„์žฌ ๋ฐ˜๋ณต์—์„œ์˜ ๋ช…๋ น์„ ์ข…๋ฃŒํ•˜๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์กฐ๊ฑด์œผ๋กœ ๊ฑด๋„ˆ๋œ€

์ฐธ๊ณ 

Roman Numeral To Integer - LeetCode Algorithm Solution + Code Vanilla Javascript

[์•Œ๊ณ ๋ฆฌ์ฆ˜ - LeetCode] Roman to Integer