99클럽 코테 스터디 3일차 TIL / [프로그래머스] 숫자 문자열과 영단어

전종원·2024년 7월 24일
0

오늘의 학습 키워드


replaceAll

문제


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

  • 플랫폼: 프로그래머스
  • 문제명: 숫자 문자열과 영단어
  • 난이도: Lv1

풀이


import java.util.*;

class Solution {
    public int solution(String s) {
        int answer = 0;
        Map<String, Integer> map = initStr();
        
        for(String word : map.keySet()) {
            s = s.replaceAll(word, String.valueOf(map.get(word)));
        }
        
        return Integer.parseInt(s);
    }
    
    public Map initStr() {
        Map<String, Integer> map = new HashMap<>();
        
        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);
        
        return map;
    }
}

접근

  • 단순히 정의된 문자열을 숫자로 치환하는 문제였습니다.
  • Map 자료구조에 문자열과 숫자를 매핑시켰는데, 배열에 저장했으면 더 가독성이 좋았을 것 같습니다.
    import java.util.*;
    
    class Solution {
        public int solution(String s) {
            int answer = 0;
            String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
            
            for(int i=0; i<words.length; i++) {
                s = s.replaceAll(words[i], String.valueOf(i));
            }
            
            return Integer.parseInt(s);
        }
    }

소요 시간

10분

회고


알고리즘을 풀 때 성능 뿐 아니라, 가독성을 높이기 위한 방법도 고려해보자!

0개의 댓글