숫자 문자열과 영단어 - 자바

김성환·2022년 1월 1일
0

코딩테스트

목록 보기
11/12

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/81301

나의 풀이

class Solution {
    public int solution(String s) {
        int answer = 0;
        StringBuffer answerStr = new StringBuffer("");
        StringBuffer str = new StringBuffer("");
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)>='0'&&s.charAt(i)<='9'){
                answerStr.append(String.valueOf(s.charAt(i)));
                continue;
            }
            str.append(s.charAt(i));
            if(match(str.toString())){
                answerStr.append(String.valueOf(transfer(str.toString())));
                str= new StringBuffer("");
            }
        }
        answer = Integer.valueOf(answerStr.toString());
        return answer;
    }
    public boolean match(String s){
        boolean res = false;
        if(s.equals("zero")){
            res=true;
        }
        else if(s.equals("one")){
            res=true;
        }
        else if(s.equals("two")){
            res=true;
        }
        else if(s.equals("three")){
            res=true;
        }
        else if(s.equals("four")){
            res=true;
        }
        else if(s.equals("five")){
            res=true;
        }
        else if(s.equals("six")){
            res=true;
        }
        else if(s.equals("seven")){
            res=true;
        }
        else if(s.equals("eight")){
            res=true;
        }
        else if(s.equals("nine")){
            res=true;
        }
        return res;
    }
    public int transfer(String s){
        int num = -1;
        if(s.equals("zero")){
            num=0;
        }
        else if(s.equals("one")){
            num=1;
        }
        else if(s.equals("two")){
            num=2;
        }
        else if(s.equals("three")){
            num=3;
        }
        else if(s.equals("four")){
            num=4;
        }
        else if(s.equals("five")){
            num=5;
        }
        else if(s.equals("six")){
            num=6;
        }
        else if(s.equals("seven")){
            num=7;
        }
        else if(s.equals("eight")){
            num=8;
        }
        else if(s.equals("nine")){
            num=9;
        }
        return num;
    }
}

깨달은점

문자열을 대체할 경우 String의 replace 함수와 replaceAll 함수를 잘 사용해보자
그럼 위의 코드는 아래처럼 확 줄 것이다.
replace(바꿀녀석,바꿔질녀석)

String[] alpha = {"zero","one",.....}
for(int i =0;i<alpha.length;i++){
	s.replaceAll(alpha[i],i);
}
profile
개발자가 되고 싶다

0개의 댓글