반응형
https://programmers.co.kr/learn/courses/30/lessons/81301
[ 코드 ]
class Solution {
public int solution(String s) {
int answer = 0;
String ans = "";
String[] eng_num = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
char[] num = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
for(int i=0; i<s.length(); i++){
for(int j=0; j<10; j++){
if(s.charAt(i)==num[j]) ans += Integer.toString(j);
if(i + eng_num[j].length() <= s.length() &&
s.substring(i, i + eng_num[j].length()).equals(eng_num[j])) ans += Integer.toString(j);
}
}
answer = Integer.parseInt(ans);
return answer;
}
}
char[] num 배열에 있는 것과 같으면 바로 넣고,
아니면
String[] eng_num 배열에 있는 것과 일치하고,
substring으로 잘라서 비교하다보니 범위가 넘치는 경우가 생겨 원 길이보다 작아야한다는 조건도 추가해줬다.
다른 아주 Simple한 코드가 있어 소개한다.
[ Simple code ]
class Solution {
public static int solution(String s) {
String[] arr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for (int i = 0; i < arr.length; i++) {
if (s.contains(arr[i])) {
s = s.replaceAll(arr[i], Integer.toString(i));
}
}
return Integer.parseInt(s);
}
}
String을 활용할 때는 contains로 확인하면 아주 쉽다!
또한 replaceAll로 한번에 바꿔줄 수 있다.
※ 오늘의 교훈
알고 있으면서도 쓰던 것만 쓰다보니 생각이 잘 안난다. 더 활용하도록 하자.
메소드
s.contains(arr[i]);
s.replace(arr[i], Integer.toString(i));
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천 / java - String 문제 (0) | 2021.08.26 |
---|---|
[프로그래머스] 문자열 내림차순으로 배치하기 / java (0) | 2021.07.15 |
[프로그래머스] 짝지어 제거하기 / java (0) | 2021.07.07 |
[프로그래머스] 위장 / java (0) | 2021.07.01 |
[프로그래머스] H-Index / java (0) | 2021.06.14 |