


나의 풀이
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
String str = ""; // 1
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) > 58) { // 2
if (s.charAt(i) == 'z') {
i += 3;
str += "0";
} else if (s.charAt(i) == 'o') {
i += 2;
str += "1";
} else if (s.charAt(i) == 't') {
if (s.charAt(i + 1) == 'w') {
i += 2;
str += "2";
} else {
i += 4;
str += "3";
}
} else if (s.charAt(i) == 'f') {
if (s.charAt(i + 1) == 'o') {
i += 3;
str += "4";
} else {
i += 3;
str += "5";
}
} else if (s.charAt(i) == 's') {
if (s.charAt(i + 1) == 'i') {
i += 2;
str += "6";
} else {
i += 4;
str += "7";
}
} else if (s.charAt(i) == 'e') {
i += 4;
str += "8";
} else if (s.charAt(i) == 'n') {
i += 3;
str += "9";
}
} else { // 3
str += s.charAt(i);
}
}
return answer = Integer.parseInt(str);
}
}
과정
- 매개변수 s는 String 형태로 주어지므로 s를 알맞게 변환한 후 저장할 str을 선언
- s를 순회하며 s의 i번째 문자가 58이상이라면(ASCII 참조) 첫 문자가 무엇인지 확인. t, f, s같은 경우엔 2가지씩 있으므로 i + 1번째 문자를 판단한 후 i를 해당하는 문자의 크기만큼 증가시키고, 알맞은 숫자 문자열을 str에 합친다
- 그 외엔 숫자이니 str에 그대로 넣어주고, answer에 str을 int형태로 넣어준다
다른 사람 풀이
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);
}
}