[코딩테스트]2021 카카오 채용연계형 인턴십 _숫자 문자열과 영단어

쟈니·2023년 11월 8일
0
post-thumbnail

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

나의 풀이

import java.util.*;
class Solution {
    public int solution(String s) {
       HashMap<String, String> map = new HashMap<String, String>();
        StringBuilder sb = new StringBuilder(s);
        String word = "";
        String key ="";
        map.put("zero","0");
        map.put("one","1");
        map.put("two", "2");
        map.put("three", "3");
        map.put("four", "4");
        map.put("five", "5");
        map.put("six", "6");
        map.put("seven", "7");
        map.put("eight", "8");
        map.put("nine", "9");
        for(int i =0; i<s.length(); i++){
            key += s.substring(i,i+1);
            if(map.containsKey(key)) {
                word+=map.get(key);
                key="";
                }for(String k : map.keySet()){
                if(map.get(k).equals(key)) {
                    word+=map.get(k);
                    key="";
                }
                    
            }
            
        }
         Integer answer = Integer.valueOf(word);
        
        return answer;
       
    }
}

접근 방식

  • hashmap을 이용하여 key,value로 자릿수(key)에 대한 숫자(value) 저장
  • string으로 저장 후 정수로 변환(Integer.valueOf 또는 Integer.parseInt() 사용)

다른 사람의 풀이

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);
    }
}

다른 사람의 접근 방식

  • string 배열로 자릿수 저장
  • for문의 정수 i(0~9)를 string으로 변환 후 배열의 자릿수를 대체한다.
  • 자릿수 대체는 문자열 s를 replaceAll()를 이용하여 문자 전체 대체한다.
  • string으로 저장 후 정수로 변환(Integer.valueOf 또는 Integer.parseInt() 사용)

📝 후기

  • map의 key,value 형태를 이용한 방법이 먼저 떠올랐다.
  • 문자 배열을 이용하고 for문의 정수 i를 통해 자릿수를 변경하는 방법이 내 방법보다 효율적인거 같아 최대한 주어진 문제 설명을 보고 풀이 때 사용해야될 키워드를 생각해봐야겠다.
profile
시작은 미미하나 끝은 쥬쥬하다.

0개의 댓글