기존 내 코드
public static int solution(String s) {
char[] charArr = s.toCharArray();
String[] arr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
String findWord = "";
String result = "";
for (int i=0; i < s.length(); i++) {
char currentChar = Character.valueOf(charArr[i]);
// char에서 소문자는 97부터
if(currentChar > 96){
findWord += String.valueOf(currentChar);
}else{
result += currentChar;
}
for(int j=0; j < arr.length; j ++){
if(arr[j].equals(findWord)){
result += j;
findWord = ""; // 일치하는 문자 있을 경우 초기화
}
}
}
return Integer.parseInt(result);
}
알고리즘 스터디 팀원분의 코드
class Solution {
public static int solution(String s) {
int answer = 0;
String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(int i=0; i < 10; i++){
s = s.replaceAll(words[i], String.valueOf(i));
}
answer = Integer.parseInt(s);
return answer;
}
}
class Solution {
public static int solution(String s) {
int answer = 0;
String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(int i=0; i < 10; i++){
s = s.replace(words[i], String.valueOf(i));
}
answer = Integer.parseInt(s);
return answer;
}
}
함수를 사용할 생각을 하지 못해.. 순수 for문으로 푸느라 두시간 잡아먹었다. 코드 또한 직관적이지 못하고 효율성 측면에서도 훨씬 느리긴 하지만 풀었다는 것에 뿌듯했던 문제였다! 👏🏻
위의 문제를 통해 String 문자열 치환시 replace(), replaceAll()
를 사용한다는 것을 알게 되었고, replace()와 replaceAll()의 속도차이를 보고 두 함수의 차이를 알아보는 계기가 되었다. 또한 두 함수의 차이를 인지하고 사용해야 할 상황을 잘 구분하여 적절하게 사용해야겠다.