처음 코드는 이랬다. isNumeric 메서드에서
인자로 들어온 s를 실수로 파싱하고, 파싱이 잘되면 true, 파싱이 안되면 false를 리턴한다.
그리고 리턴값을 가지고 문자열인지 아닌지 판단한다.
class Solution {
public static boolean isNumeric(String s) {
try {
Double.parseDouble(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
public boolean solution(String s) {
boolean answer = true;
if(isNumeric(s)){
if(s.length()==4||s.length()==6){
answer = true;
}else{
answer = false;
}
}else {
answer = false;
}
return answer;
}
}
11번 케이스만 통과가 안돼서 대체 왜지.... 고민하다가 질문하기를 찾아봤는데
3e10이 s로 들어온다면 double로 파싱이 가능하다..!
e는 지수의 의미를 가진 영단어 exponent의 약자 기호(=symbol) 로 만들어) "E"를 "×10^()" 대신한 간단한 약자이기 때문에 숫자맞다.
class Solution {
public static boolean isNumber(String str) {
return str.matches("[-+]?\\d*\\.?\\d+");
}
public boolean solution(String s) {
boolean answer = true;
String test = "3e10";
//answer = isNumber(s);
//boolean testB = isNumeric(test);
if(isNumber(s)){
if(s.length()==4||s.length()==6){
answer = true;
}else{
answer = false;
}
}else {
answer = false;
}
return answer;
}
}
test로 넣은 값이 잘 걸려진다.
참고블로그
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 나머지가 1이 되는 수 찾기 (0) | 2022.12.01 |
---|---|
[프로그래머스] 없는 숫자 더하기 (0) | 2022.12.01 |
[프로그래머스] 이진수 더하기 (0) | 2022.12.01 |
[프로그래머스] 부족한 금액 계산하기 (0) | 2022.11.30 |
[프로그래머스] 개미 군단 (0) | 2022.11.29 |