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

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

 

주어진 문자열을 분석하여, 숫자인 경우에는 그대로 return 하고 문자인 경우에는 부분 문자열로 아래와 같이 해석한 다음 숫자로 return 해서 최종 숫자를 계산하는 문제입니다. 프로그래머스 기준 난이도는 레벨1이며 어렵지 않은 난이도 입니다.

  • zero -> 0
  • one -> 1
  • two -> 2
  • three -> 3
  • four -> 4
  • five -> 5
  • six -> 6
  • seven -> 7
  • eight -> 8
  • nine -> 9

예제 코드는 다음과 같습니다.

class Solution {
    public static String[] numbers = {"zero","one","two","three","four","five","six","seven","eight","nine"};

    public static int solution(String s) {
        StringBuilder sb = new StringBuilder();
        int index = 0;
        while (index < s.length()) {
            char c = s.charAt(index);
            if (c >= '0' && c <= '9') {
                sb.append(Integer.parseInt(Character.toString(c)));
                index++;
            } else {
                for (int i = 0; i < numbers.length; i++) {
                    if (index + numbers[i].length() <= s.length()) {
                        String subStr = s.substring(index, index + numbers[i].length());
                        if (numbers[i].equals(subStr)) {
                            sb.append(i);
                            index+=subStr.length();
                            break;
                        }
                    }
                }
            }
        }
        return Integer.parseInt(sb.toString());
    }
}

+ Recent posts