알고리즘/알고리즘 풀이

프로그래머스_숫자 문자열과 영단어 JAVA

데부한 2025. 1. 27. 01:50
반응형

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

이번에 풀 문제는 '숫자 문자열과 영단어'이다.

2021 카카오 채용연계형 인턴십 문제라고 한다.

그리고 이미 풀었던 문제라 과거 코드가 남아있었다. 

 

과거 코드

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

        for(int i = 0; i < numbers.length; i++)
        {
            String num = numbers[i];
            if(s.indexOf(num) > -1)
            {
                s = s.replaceAll(num, i+"");
            }
        }
        
        return Integer.parseInt(s);
    }
}

 처음으로 과거 코드가 마음에 들었다..!

문제를 잘 파악하고 푼 것 같다.

문제는 숫자를 영어로 말하는 부분을 숫자로 변경하는 문제였다.

 

현재 코드

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

    for(int i = 0; i < numbers.length; i++) {
        if(s.contains(numbers[i])) {
            s = s.replaceAll(numbers[i], String.valueOf(i));
        }
    }
    return Integer.parseInt(s);
    }
}

s.replaceAll 안에 숫자인 i 부분을 문자열으로 바꿔주는 코드만 수정했다.

i+""< 이 코드는 의도가 불문명할뿐더러 성능에도 좋지가 않다.

눈에는 단순한 코드로 보이지만 내부적으로 StringBuilder를 생성하고 문자열 결합 연산을 수행하기 때문에 불필요한 오버헤드와 메모리 사용을 초래할 수 있다.

그래서 String.valueOf(i)를 사용했다.

String.valueOf()를 사용하면 가독성 및 의도가 분명하게 표시되고, 타입 안전성을 갖는다.

String.valueOf()는 모든 기본 데이터 타입 및 객체를 안전하게 처리할 수 있다. null값을 넣어도 "null"로 처리해서 에러가 발생하지 않는다.

반면 숫자+""의 경우 객체나 null을 처리할 때 NullPointerException을 유발할 수 있다.

 

 

오늘도 즐거운 코딩!

반응형