숫자 문자열과 영단어
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
숫자영단어
| 0 | zero |
| 1 | one |
| 2 | two |
| 3 | three |
| 4 | four |
| 5 | five |
| 6 | six |
| 7 | seven |
| 8 | eight |
| 9 | nine |
public static int solution(String s) {
int answer = 0;
int b=0;
String c="";
StringBuilder d= new StringBuilder();
for(int i=0; i<s.length(); i++){
if(Character.isDigit(s.charAt(i))){
d.append(s.charAt(i));
}else {
c+=s.charAt(i);
if(c.equals("one")) {
c="1"; d.append(c); c="";
}else if(c.equals("two") ) {
c="2";
d.append(c); c="";
}else if(c.equals("three")){
c="3";
d.append(c); c="";
}else if( c.equals("four")) {
c="4";
d.append(c); c="";
}else if( c.equals("five")) {
c="5";
d.append(c); c="";
}else if( c.equals("six")) {
c="6";
d.append(c); c="";
}else if( c.equals("seven")) {
c="7";
d.append(c); c="";
}else if( c.equals("eight")) {
c="8";
d.append(c); c="";
}else if( c.equals("nine")) {
c="9";
d.append(c); c="";
}
}
}
answer=Integer.parseInt(d.toString());
return answer;
}
하나씩 쪼개면서 숫자 랑 영어를 분리하고 영어는 분리해서 한단어로 계속 뭉치면서 그 단어가 영단어에 일치하면 숫자 형태로 바꿔주고 답변에 바꿀 임시 String 에 넣어주고 다시 영어 한단어씩 담을것을 초기화해주고 해서 이런것을 반복해서
풀어줬다. ! 끝!
'자바 알고리즘 문제' 카테고리의 다른 글
| 배열 만들기 5 (0) | 2023.11.28 |
|---|---|
| k의 개수 (2) | 2023.11.27 |
| 문자열이 몇 번 등장하는지 세기 (0) | 2023.11.24 |
| 수열과 구간 쿼리 3 (1) | 2023.11.24 |
| 팩토리얼 (0) | 2023.11.23 |