문제를 보고 한 글자씩 다 잘라서 만드는 것 말고는 다른 방법이 떠오르지 않았다.
split를 이용해서 한글자씩 자르고 리스트로 변환한다.
그리고 switch / case로 원하는 문자열이 만들어지면 임시 배열인 sb에 넣고 sb를 int로 변환해 리턴한다.
다른 분 코드를 보니 replaceAll을 사용해서 간단하게 풀었는데 왜 저 생각을 못했지...?
최종 코드
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public int solution(String s) {
int answer = 0;
// answer로 변환하기 전 String 변수
String sb = new String();
// s를 배열로 변환후 리스트로 변환
String[] temp = s.split("");
List<String> list = new ArrayList<>(Arrays.asList(temp));
// 문자열을 판단하기 위한 변수
String a = new String();
while(!list.isEmpty()) {
for (int i = 0; i < list.size(); i++) {
// a에 한글자씩 더해서 문자열 만들기
a += list.get(0);
// 사용한 문자 지우기
list.remove(0);
switch (a) {
case "zero":
case "0":
sb += 0;
a = ""; break;
case "one":
case "1":
sb += 1;
a = ""; break;
case "two":
case "2":
sb += 2;
a = ""; break;
case "three":
case "3":
sb += 3;
a = ""; break;
case "four":
case "4":
sb += 4;
a = ""; break;
case "five":
case "5":
sb += 5;
a = ""; break;
case "six":
case "6":
sb += 6;
a = ""; break;
case "seven":
case "7":
sb += 7;
a = ""; break;
case "eight":
case "8":
sb += 8;
a = ""; break;
case "nine":
case "9":
sb += 9;
a = ""; break;
}
}
}
answer = Integer.parseInt(sb);
return answer;
}
}
다른 분 코드
class Solution {
public int solution(String s) {
String[] strArr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(int i = 0; i < strArr.length; i++) {
s = s.replaceAll(strArr[i], Integer.toString(i));
}
return Integer.parseInt(s);
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 프로그래머스 키패드 누르기 (0) | 2021.12.03 |
---|---|
(Java) 프로그래머스 크레인 인형뽑기 게임 (0) | 2021.12.01 |
(Java) 프로그래머스 폰켓몬 (0) | 2021.11.24 |
(Java) 프로그래머스 실패율 (0) | 2021.11.23 |
(Java) 프로그래머스 약수의 개수와 덧셈 (0) | 2021.11.20 |