[2021-07-12] 숫자 문자열과 영단어

2021. 7. 12. 21:45코딩테스트

푼 시간 : 30분

언어 : 자바

 


 

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

 

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

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

programmers.co.kr

 

조건 하나를 잘못 줘서 계속 고민했다.

문자열 핸들링에 좀 능숙해졌다고 느낀것이

mapping개념으로? 풀었는지는 몰라도 mapping변수를 만들어,

매핑시키듯이 문제를 풀었다.

 

class Solution {
    public int solution(String s) {
        String answer = "";
        // 일부러 String으로 바꿔주었다.
        String[] mapping={"zero", "one", "two", "three", "four", "five",
                         "six", "seven", "eight", "nine"};
                         // 매핑 시키기 위해 배열을 만듬
        char[] temp=s.toCharArray();
        // 문자 하나하나 비교하기위한 상자
        String handler="";
        // 매핑과 비교하기위한 스트링
        
        for(int i=0; i<temp.length; i++){
            handler+=temp[i];
            // 비교하기위해 핸들러에 char로 더해준다.
            for(int j=0; j<mapping.length; j++){
                if(handler.equals(mapping[j])){
                    answer+=Integer.toString(j);
                    // 매핑과 같을경우 j를 바로 더해줬다.
                    handler="";
                    // 초기화
                }
            }
            if(temp[i]>=48&&temp[i]<=57){
            // 아스키코드 0부터 9까지
                handler="";
                // 초기화 시키고
                answer+=temp[i];
                // 더해준다
            }
        }
        
        return Integer.parseInt(answer);
        // int로 바꿔서 반환해주기
    }
}

일부러 answer을 바꾼것이 인상적이라면 인상적일 수 있는데,

나름의 생각은 어차피 자릿수를 올리는 것 보다는 그냥

더해서 int로 바꾸면 자릿수 올릴 필요도 없다는 계산이 서서 썼다.

'코딩테스트' 카테고리의 다른 글

[2021-07-25] 기능개발 (lv2)  (0) 2021.07.25
[2021-07-13] 예산  (0) 2021.07.13
[2021-06-15] 내적  (0) 2021.06.15
[2021-06-13] 로또의 최고 순위와 최저 순위  (0) 2021.06.13
[2021-06-11] 시저 암호  (0) 2021.06.11