https://programmers.co.kr/learn/courses/30/lessons/12918
코딩테스트 연습 - 문자열 다루기 기본
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1
programmers.co.kr
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
01. 나의 풀이 코드
public boolean solution(String s) {
boolean answer = true;
if(s.length() == 4 || s.length() == 6) {
for(int i = 0; i < s.length(); i++) {
if(!Character.isDigit(s.charAt(i))) {
answer = false;
}
}
} else {
answer = true;
}
return answer;
}
이렇게 하고 정답 제출 전, 코드 실행 해보니까 통과하길래 푼 줄 알았더니...
라고 한다...ㅂㄷㅂㄷ
뭐가 잘못 된건지 찾아보자.
02. 정답 풀이
public boolean solution(String s) {
boolean answer = true;
if(s.length() == 4 || s.length() == 6) {
for(int i = 0; i < s.length(); i++) {
if(!Character.isDigit(s.charAt(i))) {
answer = false;
}
}
} else {
answer = false;
}
return answer;
}
원래 풀었던 방식에서 else의 answer만 수정하거나,
public boolean solution(String s) {
boolean answer = true;
if (s.length() == 4 || s.length() == 6) {
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) < '0' || s.charAt(i) > '9') {
answer = false;
}
}
} else {
answer = false;
}
return answer;
}
이렇게 바꿔보자!
문제였던 부분
if ~ else 문에서 answer를 true에서 false로 잘 못 써져있던 걸 수정하니까 통과했다.
s.length가 4 아니면 6 이지 않을 경우에~ 라는 뜻으로 else 안에 수행할 구문이 적혀있는데 당연히 false인데 true로 써놨기 때문에 그랬다.
논리적으로 다시 한 번 잘 생각해보고 코드를 짜도록 하자!
[공부한 내용]
▶ Charater 클래스의 isDigit() 메소드
http://www.w3big.com/ko/java/character-isdigit.html
자바 isdigit에 () 메소드
자바 isdigit에 () 메소드 자바 문자 클래스 isdigit에 () 메소드가 지정된 문자가 숫자인지 여부를 확인하는 데 사용됩니다. 문법 boolean isDigit(char ch) 매개 변수 ch - 판정 대상의문자입니다. 반환 값
www.w3big.com
- 지정된 문자가 숫자인지 확인하는 메소드
- 반환 타입은 boolean 으로 숫자면 true, 문자이면 false를 리턴한다.
'Study > Code Review' 카테고리의 다른 글
[프로그래머스] 배열의 유사도 (1) | 2024.08.30 |
---|---|
[프로그래머스] 문자열 내 p와 y의 개수 (0) | 2022.02.13 |
[프로그래머스] 자리수 더하기 (0) | 2022.01.27 |
[프로그래머스] 콜라츠 추측(자바) (0) | 2022.01.16 |
DAY 92. JavaScript 배열 연습 문제 - 배열에 추가, 삭제 (0) | 2021.11.18 |