알고리즘
프로그래머스 숫자 문자열과 영단어(JAVA)
박카스마시며코딩
2022. 3. 5. 20:33
https://programmers.co.kr/learn/courses/30/lessons/81301
코딩테스트 연습 - 숫자 문자열과 영단어
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자
programmers.co.kr
저는 substring을 통해 해당 문제를 해결하였습니다.
for문마다 매번 10을 곱해 각자리 수를 구분하였습니다.
문자가 숫자라면 더해주고, 문자라면 substring을 통해 문자를 숫자의 문자열과 비교해 같은 것의 인덱스를 더해주었습니다.
import java.util.*;
class Solution {
/*
zero , one , two , three , four , five , six , seven , eight , night
*/
private static String[] numberToString = {
"zero" , "one" , "two" , "three" , "four" , "five" , "six" , "seven" , "eight" , "nine"
};
private static int cal(String s){
int result = 0;
for(int i = 0 ; i < s.length() ;i++){
// System.out.println(i);
char now = s.charAt(i);
result *= 10;
if(now >= '0' && now <= '9'){
result += now-'0';
continue;
}
for(int j = 0 ; j < 10; j++){
int length = numberToString[j].length();
if(i + length <= s.length()){
String str = s.substring(i, i+length);
if(str.equals(numberToString[j])){
result += j;
i += (length - 1);
break;
}
}
}
}
return result;
}
public int solution(String s) {
int answer = cal(s);
return answer;
}
}