프로그래머스 lv1 숫자 문자열과 영단어

namkun·2022년 7월 1일
0

코딩테스트

목록 보기
6/79

문제 링크

숫자 문자열과 영단어

풀이

class Solution {
    public int solution(String s) {
      StringBuilder answer = new StringBuilder();

            char[] chars = s.toCharArray();

            StringBuilder word = new StringBuilder();

            for (char c : chars) {
                if(checkNumber(c)){
                    answer.append(c);
                } else {
                    word.append(c);
                    if (!convertor(word.toString()).isEmpty()) {
                        answer.append(convertor(word.toString()));
                        word = new StringBuilder();
                    }
                }
            }

            return Integer.parseInt(answer.toString());
    }
    
    public  boolean checkNumber(char s) {
        return Character.isDigit(s);
    }

    public String convertor(String s) {
        switch (s) {
            case "one":
                return "1";
            case "two":
                return "2";
            case "three":
                return "3";
            case "four":
                return "4";
            case "five":
                return "5";
            case "six":
                return "6";
            case "seven":
                return "7";
            case "eight":
                return "8";
            case "nine":
                return "9";
            case "zero":
                return "0";
        }
        return "";
    }
}

소감

  • 생각나는 대로 했으니 switch-case를 사용해서 하게 되었다.
  • 문제를 푼 뒤에 볼 수 있는 다른 사람들 풀이는 생각하지도 못한 방법이었다.
  • replaceAll 과 두 개의 String 배열을 통해서 for문으로 돌려서 풀다니..
import java.util.*;

class Solution {
    public int solution(String s) {
        int answer = 0;
        StringBuilder sb = new StringBuilder("");
        int len = s.length();
        String[] digits = {"0","1","2","3","4","5","6","7","8","9"};
        String[] alphabets = {"zero","one","two","three","four","five","six","seven","eight","nine"};

        for(int i=0; i<10; i++){
            s = s.replaceAll(alphabets[i],digits[i]);
        }

        return Integer.parseInt(s);
    }
}
profile
개발하는 중국학과 사람

0개의 댓글