class Solution {
public long solution(String numbers) {
char[] array = numbers.toCharArray();
// "" 안붙이면 에러 발생함
String sample = "";
String newSample = "";
for (int i = 0; i < array.length; i++) {
sample += array[i];
// 검증
newSample = convert(sample);
}
long answer = Long.parseLong(newSample);
return answer;
}
public String convert(String sample) {
if (sample.contains("one")) {
sample = sample.replace("one", "1");
}
if (sample.contains("two")) {
sample = sample.replace("two", "2");
}
if (sample.contains("three")) {
sample = sample.replace("three", "3");
}
if (sample.contains("four")) {
sample = sample.replace("four", "4");
}
if (sample.contains("five")) {
sample = sample.replace("five", "5");
}
if (sample.contains("six")) {
sample = sample.replace("six", "6");
}
if (sample.contains("seven")) {
sample = sample.replace("seven", "7");
}
if (sample.contains("eight")) {
sample = sample.replace("eight", "8");
}
if (sample.contains("nine")) {
sample = sample.replace("nine", "9");
}
if (sample.contains("zero")) {
sample = sample.replace("zero", "0");
}
return sample;
}
}
아주 노가다적인 코드이다. 어떻게 하면 스마트하게 바꿀 수 있을까?
class Solution {
public long solution(String numbers) {
String[] numbers_arr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for (int i = 0; i < numbers_arr.length; i++) {
numbers = numbers.replaceAll(numbers_arr[i], String.valueOf(i));
}
long answer = Long.parseLong(numbers);
return answer;
}
}
1) replaceAll()
2) replace(), replaceAll() 모두 반환값이 있는 함수다.
// 틀린 예
if (sample.contains("zero")) {
sample.replace("zero","0");
}
// 올바른 예
if (sample.contains("zero")) {
sample = sample.replace("zero", "0");
}
3) String sample = ""; 이 아니라 String sample;로 선언하면 에러 발생한다.