[Leetcode] 13. Roman to Integer
Algorithm2021. 7. 20. 22:20
반응형
Identifying the Problem
로마 숫자 표기를 int 형 숫자로 리턴하는 문제이다.
자세한 것은 아래 블로그를 참고하였다.
Organizing thoughts
핵심 아이디어는 로마자 숫자 표기는 4와 9를 표기할 때만 왼쪽에 I를 붙이는 것이다.
40, 90도 마찬가지 이다.
따라서 4와 9인 case 와 아닌 경우로 나누어 조건을 분리하였다.
또한 문자별로 M > D > C > L > X > V > I 의 우선순위를 갖고,
그렇기에 5단위는 10단위 앞에 올 수 없고, D앞에 C를 제외한 나머지는 들어갈 수 없다.
이러한 모든 조건을 따져 보면 조건이 그렇게 많지 않음을 알 수 있다.
따라서 이러한 조건을 짠 후, 문자열 길이만큼 반복문으로 검사하였다.
1. 변수 sum 0으로 생성 후 초기화
2. 문자열 길이 파악
3. 조건 작성
4. 조건에 따른 수 sum 에 누적
Sourcecode
int romanToInt(char * s){
int n = strlen(s);
int answer = 0;
char c=0,nxt = 0;
for(int i=0;i<n;i++)
{
c = *(s+i);
nxt = *(s+1+i);
if(c=='M')
answer += 1000;
if(c=='D')
answer += 500;
if(c=='C')
{
if(nxt =='M' ||nxt =='D')
answer -=100;
else
answer +=100;
}
if(c=='L')
answer +=50;
if(c=='X')
{
if(nxt =='C' ||nxt =='L')
answer -=10;
else
answer +=10;
}
if(c=='V')
answer += 5;
if(c=='I')
{
if(nxt =='X' || nxt =='V')
answer -=1;
else
answer +=1;
}
}
return answer;
}
Mistake
어렵다고 생각할 수 있지만, 의외로 쉬운 경우가 많다.
New things learned
- 패턴을 찾으려기보다, 가능한 모든 경우를 파악하는게 더 좋을 수 있다.
가끔은 노가다가 정답일지도..??
반응형
'Algorithm' 카테고리의 다른 글
[Leetcode] 21. Merge Two Sorted Lists (0) | 2021.07.24 |
---|---|
[Leetcode] 14. Longest Common Prefix (0) | 2021.07.24 |
[Leetcode] 20. Vaild Parentheses (0) | 2021.07.20 |
[Leetcode] 9. Palindrome Number (0) | 2021.07.19 |
[Leetcode] 7. Reverse Integer (1) | 2021.07.18 |
댓글()