728x90
SMALL
https://school.programmers.co.kr/learn/courses/30/lessons/81301
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
간단하게 문자들을 미리 담아놓고 돌아가면서 replace를 해주면된다.
0, 1, 2, 3 을 따로 저장해주지 않은 이유는 index값이 해당 값이기 때문에 따로 저장하진 않았다.
class Solution {
public int solution(String s) {
String[] arr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(int i = 0 ; i<arr.length ; i++){
s = s.replace(arr[i],Integer.toString(i));
}
return Integer.parseInt(s);
}
}
아래처럼도 풀어보았는데..
class Solution {
public int solution(String s) {
int answer = 0;
StringBuilder sb = new StringBuilder();
for(int i=0;i<s.length();i++){
switch(s.charAt(i)){
case 'z' :
sb.append(0);
i=i+3;
break;
case 'o' :
sb.append(1);
i=i+2;
break;
case 't' :
if(s.charAt(i+1)=='w'){
sb.append(2);
i=i+2;
}else{
sb.append(3);
i=i+4;
}
break;
case 'f' :
if(s.charAt(i+1)=='o'){
sb.append(4);
}else{
sb.append(5);
}
i=i+3;
break;
case 's' :
if(s.charAt(i+1)=='i'){
sb.append(6);
i=i+2;
}else{
sb.append(7);
i=i+4;
}
break;
case 'e' :
sb.append(8);
i=i+4;
break;
case 'n' :
sb.append(9);
i=i+3;
break;
default :
sb.append(s.charAt(i));
break;
}
}System.out.println(sb);
answer = Integer.parseInt(sb.toString());
return answer;
}
}
// z , o, t2, f2, s2, e, n
속도 차이가 꽤 난다. StringBuffer를 이용해서 계속 append를 해줘서 그런걸까?
728x90
LIST
'Coding test > Programmers' 카테고리의 다른 글
[프로그래머스][JAVA] 짝수는 싫어요 (0) | 2023.08.14 |
---|---|
[프로그래머스][JAVA] 프로세스 (0) | 2023.08.13 |
[프로그래머스][JAVA] 같은 숫자는 싫어 (0) | 2023.08.09 |