KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기 | Algorithm CODEKATA
🆎 문자열 다루기 기본
🏷 관련 주제 : String
char
length()
toCharArray()
Exception
try-catch

✔️ Solution with length() & tocharArray() & char
class Solution {
public boolean solution(String s) {
boolean answer = true;
int len = s.length();
if (len != 4 && len != 6) {
answer = false;
} else {
for (char c : s.toCharArray()) {
if (c < '0' || c > '9') {
answer = false;
break;
}
}
}
return answer;
}
}
채점 결과

✔️ Solution with try-catch Statement
class Solution {
public boolean solution(String s) {
try {
int n = Integer.valueOf(s);
if (s.length() == 4 || s.length() == 6) {
return true;
}
} catch(NumberFormatException e) {
}
return false;
}
}
채점 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍
📌 오늘 만난 문제 : 문자열 s
의 길이가 4
혹은 6
이고, 숫자로만 구성되어 있으면 true
, 아니면 false
를 반환하는 함수, solution을 완성하세요.
문자열 길이는 length()
메서드를 통해 알 수 있다.
if문을 통해s
의 길이 s.length()
가 4
혹은 6
이 아니면 반환할 boolean answer
에 false
를 할당s
의 길이가 4
또는 6
이면 int i
의 범위가 0
~ s.length() - 1
인 반복문을 돌면서
문자열 s
의 i
번 인덱스의 문자를 charAt()
메서드를 통해 가져올 수 있다.s
의 i
번 인덱스의 문자 s.charAt(i)
를 char c
에 할당한다.
숫자로된 문자는 '0'
, '1'
, '2'
, '3'
, '4'
, '5'
, '6'
, '7'
, '8'
, '9'
이고
이 값들은 정수로 변환하면 48
~ 57
사이의 값들이다.
char형 끼리는 굳이 정수형으로 변환하지 않더라도 비교 연산자로 비교가 가능하다.
char c
가 c <= '0'
이고 c >= '9'
이면 숫자c < '0'
또는 c > '9'
이면 문자c
가 '0'
보다 작거나 '9'
보다 크면 문자열 s
가 숫자가 아닌 문자 c
를 포함한는 것이므로
boolean answer
에 false
를 할당하고 반복문을 종료한다.
마지막으로 answer
에 할당된 boolean 값을 반환한다.
숫자가 아닌 문자가 포함된 문자열 "a234"
에 Integer.valueOf()
메서드를 사용하면
Exception이 발생한다.

이것을 이용해서 문제를 풀어보기로 했다.
바로 Try-Catch문을 이용해서
Exception이 발생하면 false
를 반환하고
아니면 문자열 길이가 4
또는 6
을 만족할 때, true
를 반환하도록 문제를 풀어보았다.
💬 무엇을 새롭게 알았는지
String, char형을 다루어 보았다.
char형의 값을 비교하는 코드를 작성해 보았다.
📚 참고 자료