[Programmers] : 2021 카카오 인턴 > 숫자 문자열과 영단어 > JAVA

🔗 문제 링크

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

 

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

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

programmers.co.kr

 

 

💻 코드

import java.util.*;
class Solution {
    private static HashMap<String, Integer> m = new HashMap<>();
    public int solution(String s) {
        int answer = 0;
        
        m.put("zero", 0);
        m.put("one", 1);
        m.put("two", 2);
        m.put("three", 3);
        m.put("four", 4);
        m.put("five", 5);
        m.put("six", 6);
        m.put("seven", 7);
        m.put("eight", 8);
        m.put("nine", 9);
        
        Iterator<String> iter = m.keySet().iterator();
        while (iter.hasNext()) {
            String key = iter.next();
            Integer value = m.get(key);

            s = s.replaceAll(key, String.valueOf(m.get(key)));
        }
        //System.out.println("s = " + s);
        
        return Integer.parseInt(s);
    }
}

 

💻 다른 풀이

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);
    }
}
class Solution {
    public int solution(String s) {
        String[] strArr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        for(int i = 0; i < strArr.length; i++) {
            s = s.replaceAll(strArr[i], Integer.toString(i));
        }
        return Integer.parseInt(s);
    }
}

댓글

Designed by JB FACTORY