잡다한 배똥월드

728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

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

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

programmers.co.kr

 

 

 

 

 

class Solution {
    public int solution(String s) {
        String[] word = {"zero", "one", "two", "three", "four", "five",
                        "six", "seven", "eight", "nine"};
        int answer = 0;
        String q = s;
        
        while (q.length() > 0) {
            String t = q.substring(0, 1);
            char temp = t.charAt(0);
            
            if (temp >= '0' && temp <= '9') {
                answer = answer * 10 + Integer.parseInt(t);
                q = q.substring(1, q.length());
                continue;
            }
            
            for (int j = 0; j < word.length; j++) {
                if (q.indexOf(word[j]) == 0) {
                    answer = answer * 10 + j;
                    q = q.substring(word[j].length(), q.length());
                    break;
                }
            }
            
        }
        return answer;
    }
}

 

테스트 1 통과 (0.03ms, 74.6MB)
테스트 2 통과 (0.04ms, 75.6MB)
테스트 3 통과 (0.05ms, 73.6MB)
테스트 4 통과 (0.07ms, 77.3MB)
테스트 5 통과 (0.05ms, 81.4MB)
테스트 6 통과 (0.08ms, 75.2MB)
테스트 7 통과 (0.05ms, 71.6MB)
테스트 8 통과 (0.05ms, 73MB)
테스트 9 통과 (0.11ms, 71.8MB)
테스트 10 통과 (0.04ms, 78.5MB)

 

 

 

 

음.. 일단 글자가 숫자인지를 먼저 파악하기 위해서 제일 앞 글자를 char로 바꿔서 숫자인지 파악한다.

answer에 숫자를 더하는 것은 한 번 할 때마다 자리수가 바뀌기 때문에 10을 곱한 후에 더해주는 식으로 진행하며

만약에 숫자가 아닐 경우에는 이제 String 배열에 만들어 놓은 숫자 영단어를 하나씩 비교해 가면서

해당하는 영단어가 제일 앞에서 시작되는지 안되는지를 파악하여 만들었다.

 

 

 

 

뭔가 설명이 이상하지만... 설명할 수 있는 방법이 없눼...

 

 

 

 

 

728x90

+ Recent posts