코드카타 #06

TaeYang·2021년 9월 30일
0

CodeKata

목록 보기
4/8

문제


로마자에서 숫자로 바꾸기

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


풀이

let s = "IV"
function romanToNum(s) {
  const obj={
    I : 1,
    V : 5,
    X : 10,
    L : 50,
    C : 100,
    D : 500,
    M : 1000
  };

  let num = 0;
  for(let i=0; i<s.length; i++){
    let num1 = obj[s[i]]
    let num2 = obj[s[i+1]]
    if(num1 < num2){
      num -= num1;
    } else {
      num += num1;
    }
  }

  return num;
}

//결과값 -> 4

풀이과정

  • obj이라는 객체를 만들어줘서 key값에는 로마자를 value에는 숫자를 넣어줍니다.
  • num이라는 변수를선언해 0을 넣어 초기화 해줍니다.
  • 반복문을 사용해줍니다.
  • num1에는 obj의 0인덱스부터 시작하도록 넣어주고 num2은 인덱스 +1을 해서 1인덱스부터 시작하도록넣어줍니다.
  • if 조건문은 num1num2보다 작을경우 num값에 마이너스를 해주고 그외의 상황에는 num 변수에 num+ num1을 더해줍니다.

짧은 회고

처음 방향을 잘못잡고 코드를 치게되면 잘못된 방향으로만 계속 달리게 되는거 같다 앞으로는 코드를 치기전에 어떤 방식과 순서로 풀어나갈지 생각을 하고 코드를 입력해야겠다.

profile
음악 전공 이였던 예비 프론트엔드 개발자☀️

0개의 댓글