알고리즘/알고리즘 풀이
프로그래머스_숫자 문자열과 영단어 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을 유발할 수 있다.
오늘도 즐거운 코딩!
반응형