CodeCata - 3

이동근·2021년 2월 9일
0

코드카타

목록 보기
3/5

로마자 번역하기

문제!

로마자에서 숫자로 바꾸기 1 ~ 39999 사이의 로마자를 인자로 주면 그에 해당하는 숫자 반환

접근법

  1. string, 문자열 상태이니까 슬라이싱이 가능하다 . for loop를 돌려서 로마자 한 개당 대응되는 숫자를 빈 값에 더해준다.
  2. 슬라이싱을 했을때 앞에있는 숫자가 뒤에 있는 숫자보다 작을때에는 뒤에있는 숫자에서 앞에 있는 것을 빼준 값이다.

코드

  1. 'roman' 이라는 dictionary를 선언을 해준다.
  2. 'cnt = 0' 각 자리수에서 나온 값을 더해주는 상수
  3. s의 길이까지 해서 for loop를 돌릴때, i = 0인 경우는 그냥 더해주면 된다. 그리고 i > 0 보다 큰 경우에 그 전 자리와 비교해서 더해준다.

BONUS

구글링 해서 찾아보니 예외의 조건들을 다 dict에 넣어서 하는 경우도 있었다. 4000 이하에서 나올 수 있는 예외의 경우를 찾아보니 900, 400, 90, 40, 9, 4 이렇게 정해져 있었고 이들만 따로 list나 dict를 선언 해준 다음에 2자리씩 슬라이싱을 하는 방식으로 문제를 해결 한 방법도 있었다.


코드카타에 주어진 시간에 풀지 못하였다. 알고리즘은 많이 풀어 볼 수록 좋다고 하는데 부지런하게 풀 필요가 있을 것 같다.... 이건 쉬운 문제라고 하던데...

profile
하루하루 1cm 자라는 개발자

0개의 댓글

관련 채용 정보