https://school.programmers.co.kr/learn/courses/30/lessons/81301
Character.isDigit()
- char형 문자하나가 숫자인지 아닌지 검사하고 boolean 형값을 반환
- 숫자면 true, 그외에는 false
Character.isAlphabetic()
- char형 문자가 알파벳인지 판단
Character.isLetter()
- char형 문자가 문자인지 판단
Character.isSpace()
- char형 문자가 공백문자인지 판단
정답
- 현재 문자가 숫자라면 결과 그냥 더하기
- 숫자가 아니라면 숫자를 나타내는 단어의 일부일 수 있음
- 현재 문자를 임시 StringBuilder 'temp'에 추가 하며 임시 단어를 생성
-임시단어 temp가 map의 키라면 해당되는 value값을 결과에 더하기
import java.util.*;
class Solution {
public int solution(String s) {
HashMap<String,Integer> map = new HashMap<>();
map.put("zero",0);
map.put("one",1);
map.put("two",2);
map.put("three",3);
map.put("four",4);
map.put("five",5);
map.put("six",6);
map.put("seven",7);
map.put("eight",8);
map.put("nine",9);
StringBuilder answer = new StringBuilder();
//문자가 숫자 단어에 해당되는 지 확인 하기 위한 임시 StringBuilder
StringBuilder temp = new StringBuilder();
for(int i=0; i<s.length(); i++)
{
char cur = s.charAt(i);
if(Character.isDigit(cur))
{
answer.append(cur);
}
//숫자가 아니라면, 숫자를 나타내는 단어의 일부인지 판단
else
{
//현재 문자를 임시 temp에 저장
temp.append(cur);
if(map.containsKey(temp.toString()))
{
answer.append(map.get(temp.toString()));
temp.setLength(0); //temp 초기화
}
}
}
return Integer.parseInt(answer.toString());
}
}
다른 사람의 풀이
1)
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);
}
}
2)
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
StringBuilder sb = new StringBuilder("");
int len = s.length();
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);
}
}
'Java > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 두 개 뽑아서 더하기 (0) | 2024.05.17 |
---|---|
[JAVA] 프로그래머스 - 핸드폰 번호 가리기 (0) | 2024.05.17 |
[JAVA] 프로그래머스 - 나누어 떨어지는 숫자 배열 (0) | 2024.05.17 |
[JAVA] 프로그래머스 - 시저 암호 (0) | 2024.05.17 |
[JAVA] 프로그래머스 - 없는 숫자 더하기 (0) | 2024.05.17 |