class Num {
public int solution(String s) {
String k = "";
String number = "1234567890";
String tmp = "";
for(int i = 0; i<s.length(); i++) {
if((number).contains(s.charAt(i)+"")) {
k += s.charAt(i)+"";
}else {
tmp += s.charAt(i)+"";
switch (tmp) {
case "one":
k += "1";
tmp = "";
break;
case "two":
k += "2";
tmp = "";
break;
case "three":
k += "3";
tmp = "";
break;
case "four":
k += "4";
tmp = "";
break;
case "five":
k += "5";
tmp = "";
break;
case "six":
k += "6";
tmp = "";
break;
case "seven":
k += "7";
tmp = "";
break;
case "eight":
k += "8";
tmp = "";
break;
case "nine":
k += "9";
tmp = "";
break;
case "zero":
k += "0";
tmp = "";
break;
default:
break;
}
}
}
return Integer.parseInt(k);
}
}
굉장히 원시적인 방법으로 풀었다.
1. number 변수 안에 숫자를 기입하여 contains를 통해 변수 k 에 저장을 하였다.
2. 임시 저장공간 tmp에 숫자 이외의 알파벳을 저장한다.
3. switch문을 통해 숫자를 가르키는 영단어가 되면 해당하는 숫자를 k에 더해주고 tmp를 초기화 시켜준다.
4. 문자로 되어있는 k를 int로 변환해서 return 한다.
다른 분이 쉽게 풀이 한 방법
class Solution {
public int solution(String s) {
String[] digits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
String[] alphabets = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
for(int i = 0; i<10; i++) {
s = s.replaceAll(alphabets[i], digits[i]);
}
return Integer.parseInt(s);
}
}
1. 숫자는 0~9 까지 10가지의 수이다.
2. 숫자 배열 0~9, 문자 배열 zero~nine을 넣어준다.
3. <1>번 조건을 바탕으로 반복문을 10회 돌려 replaceAll을 하여 s 배열에서 문자 배열을 숫자 문자열로 바꿔준다.
4. 문자를 정수형으로 변환해준다.
'코딩테스트 문제풀이' 카테고리의 다른 글
프로그래머스 (없는 숫자 더하기) (0) | 2021.09.15 |
---|---|
프로그래머스 (키패드 누르기) (0) | 2021.09.14 |
프로그래머스 (아이디 추천 ) (0) | 2021.09.08 |
3519 : Tutorial : 합병(병합)정렬(Merge Sort) -(JUNGOL) (0) | 2021.09.07 |
프로그래머스 - 로또의 최고순위와 최저 순위 (0) | 2021.08.18 |