본문 바로가기
SOFTWARE/ALGORITHM

[leetcode] Roman To Integer

by eooa 2022. 1. 21.
반응형

네 .. 저는 하드코딩 하는 사람입니다.

진짜.. 클린코드 하고싶은데.

맘처럼 안되네요.

 

그래도 아직 저는 초보이니까!

문제를 해결했다는거에 만족을 해보렵니다!

 

 

정말 긴... 나의 하드코드..

class Solution {
    public int romanToInt(String s) {
        String symbols = "IVXLCDM";
	int answer = 0;
	
	int length = s.length();
	int symLength = symbols.length();
	
	for(int i=0; i<length; i++){
		for(int j=0; j<symLength; j++){
			if(symbols.charAt(j) == s.charAt(i)){
				if(j == 0){
					if(i <length-1 && s.charAt(i+1) == 'V'){
						answer += 4;
					}else if(i <length-1 && s.charAt(i+1) == 'X'){
						answer += 9;
					}else{
						answer += 1;
					}
				}else if(j == 1){
					if(i > 0 && s.charAt(i-1) == 'I'){
						answer += 0;
					}else{
						answer += 5;
					}
				}else if(j == 2){
					if(i > 0 && s.charAt(i-1) == 'I'){
						answer += 0;
					}else{
						answer += 10;
					}
					if(i <length-1 && s.charAt(i+1) == 'L'){
						answer += 30;
					}else if(s.charAt(i+1) == 'C'){
						answer += 80;
					}
				}else if(j == 3){
					if(i > 0 && s.charAt(i-1) == 'X'){
						answer += 0;
					}else{
						answer += 50;
					}
				}else if(j == 4){
					if(i > 0 && s.charAt(i-1) == 'X'){
						answer += 0;
					}else{
						answer += 100;
					}
					if(i <length-1 && s.charAt(i+1) == 'D'){
						answer += 300;
					}else if(i <length && s.charAt(i+1) == 'M'){
						answer += 800;
					}
				}else if(j == 5){
					if( i > 0 && s.charAt(i-1) == 'C'){
						answer+= 0;
					}else{
						answer += 500;
					}
				}else{
					if( i > 0 && s.charAt(i-1) == 'C' ){
						answer+= 0;
					}else{
						answer += 1000;
					}
				}
			}
		}
	}
        return answer;
    }
}

 

반응형

'SOFTWARE > ALGORITHM' 카테고리의 다른 글

[leetcode] Roman To Integer  (0) 2022.01.21
[leetcode] Palindrome Number  (0) 2022.01.09
[leetcode] two sum  (0) 2021.10.08
[codewars] Is a number prime? - 소수인 숫자 찾기  (0) 2020.02.17
[codewars] Sum of odd numbers  (0) 2020.02.16

댓글