https://school.programmers.co.kr/learn/courses/30/lessons/81301
영문과 숫자가 혼합된 input 값 > int 형태의 숫자 output 값 변환
s | result |
---|---|
"one4seveneight" | 1478 |
"23four5six7" | 234567 |
"2three45sixseven" | 234567 |
"123" | 123 |
1) 영문을 미리 String 배열에 세팅한다
2) 배열 길이만큼 루프를 돌면서 검사를 수행한다.
2-1) input String이 위 배열의 문자를 포함하고 있는지 검사
2-2) 문자열을 위 배열에서 숫자로 대체
class Solution {
public int solution(String s) {
String [] engNum = {"zero","one","two","three","four","five","six","seven","eight","nine"};
for(int i = 0 ; i<engNum.length; i++){
if(s.contains(engNum[i])){ // 영문 포함 확인
s = s.replace(engNum[i], Integer.toString(i) ); // 앞을 뒤로 변경
// 이때 인덱스 값으로 대체하면 된다.
}
}
return Integer.parseInt(s);
}
}
0.06ms ~ 0.07ms (StringBuilder 사용 안 한 것 치고 괜찮았다!)
테스트 1 〉 | 통과 (0.07ms, 82.1MB) |
---|---|
테스트 2 〉 | 통과 (0.08ms, 87.2MB) |
테스트 3 〉 | 통과 (0.08ms, 67MB) |
테스트 4 〉 | 통과 (0.06ms, 77.1MB) |
테스트 5 〉 | 통과 (0.06ms, 76.8MB) |
테스트 6 〉 | 통과 (0.07ms, 71.8MB) |
테스트 7 〉 | 통과 (0.10ms, 72.2MB) |
테스트 8 〉 | 통과 (0.11ms, 75.6MB) |
테스트 9 〉 | 통과 (0.14ms, 76.7MB) |
테스트 10 〉 | 통과 (0.05ms, 71MB) |
string.contains("문자열")
string 내에 문자열을 포함할 경우 true 리턴, 문자열 내의 공백도 체크
string = string.replace("바꾸고 싶은 문자열", "변경될 문자열")
변경된 값을 string 변수에 담아야 한다.
Integer.parseInt(string)
숫자만으로 구성된 string을 int로 변환한다.
class Solution {
public int solution(String s) {
String[] strArr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
// contains를 검사할 필요가 없었다!
for(int i = 0; i < strArr.length; i++) {
s = s.replaceAll(strArr[i], Integer.toString(i));
}
return Integer.parseInt(s);
}
}
이외에는 hashmap을 사용하거나, 숫자 또한 배열로 선언하는 방식이 있었다.
아주 중요한 정보를 얻었습니다, 감사합니다.