처음에는 엥 어떻게 하지.. 저 문자가 어떤 숫자인줄 알고 자릿수별로 짜를 수도 없을 것 같은데.. 하며 점점 삼천포로 가더니 머릿속에는 온갖 복잡한 로직들로 가득찼다..
다시 천천히 생각해보니 Java에는 replace라는 좋은 메소드가 있다는게 떠올라 아래 로직이 완성되게 되었다.
문제 풀이 후 다른 사람의 풀이를 보았는데 대다수가 나와 같거나 비슷한 로직으로 풀이하셨더라!
EngStrToNumStr.java
package com.example.Programmers.Lv1;
/**
* 프로그래머스 Lv1 - 숫자 문자열과 영단어
*/
public class EngStrToNumStr {
public int solution(String s) {
int answer = 0;
String[] num = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
for (int i = 0; i < 10; i++) {
s = s.replace(num[i], Integer.toString(i));
}
answer = Integer.parseInt(s);
return answer;
}
}
EngStrToNumStrTest.java
package com.example.Programmers.Lv1;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class EngStrToNumStrTest {
@Test
public void engStrToNumStrTest() {
EngStrToNumStr calc = new EngStrToNumStr();
int result1 = calc.solution("one4seveneight");
int result2 = calc.solution("23four5six7");
int result3 = calc.solution("2three45sixseven");
int result4 = calc.solution("123");
assertEquals(1478, result1);
assertEquals(234567, result2);
assertEquals(234567, result3);
assertEquals(123, result4);
}
}