숫자 문자열과 영단어

Heeeoh·2023년 2월 16일
0

프로그래머스

목록 보기
5/26
post-thumbnail

🔍문제 분석

✔️ 출처

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

📖 문제


문자열 변환 문제

🔅 문제풀이

처음 풀이는 숫자만 있을 때랑 문자열이랑 같이 있을 때를 고려해서 replaceAll로 숫자만있는건 empty상태로 만들었다

class Solution {
    public int solution(String s) {
        int answer = 0;
        String[] num = {"zero","one","two","three","four","five","six","seven","eight","nine"};
        String tmp  = s.replaceAll("[0-9]", "");
        
        if(!tmp.isEmpty()){
            for(int i = 0; i < num.length; i++){
                s = s.replace(num[i], String.format("%d",i));    
            }
        	answer = Integer.parseInt(s);
            
        } else {
            
            answer = Integer.parseInt(s);
        }

        
        return answer;
    }
}

순간 반복문의 i값을 문자열로 바꾸는게 생각이 안나서 지난 보물찾기 문제에서 썼던 String.format이 생각나서 섰다. 속도가 좀 느리다...


🔅 2차 문제풀이

class Solution {
    public int solution(String s) {
        int answer = 0;
        String[] num = {"zero","one","two","three","four","five","six","seven","eight","nine"};

        for(int i = 0; i < num.length; i++){
            s = s.replace(num[i], Integer.toString(i));
        }
        answer = Integer.parseInt(s);

        return answer;
    }
}

replace의 target이 아니면 안바뀌기에 굳이 if문을 써서 숫자만 있을때를 처리하지 않아도 된다.
i를 문자열로 처리해줄 Integer.toString()이 있었다.

❗ 오답노트 / 필요한 지식

  1. 코드를 짤때 해당 메소드에 대해 더 생각할 필요가 있다.
  2. 처리 속도의 대한 이해가 필요한 것 같다.
profile
열심히 살자

0개의 댓글