✍🏻 문제설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
🎈입출력 예
✨ 소스코드&결과
class Solution {
public boolean solution(String s) {
// 숫자 0의 아스코드 값: 49 , 9의 아스코드 값 : 57
boolean answer = true;
int len = s.length(); // s의 길이
if(len == 4 || len == 6) {
for(int i = 0; i < len; i++){
int n = (int)s.charAt(i);
if(n < 48 || n > 57) answer = false;
}
}else answer = false;
return answer;
}
}
💡 코드 설명
- len을 .length()를 이용하여 s의 길이를 넣어 선언 해주었다.
- 만약 len이 4 또는 6이 이면 answer값은 true이고, 아니면 answer에 false값을 추가해주었다.
- if안에 for문을 추가하여 i는 0으로 선언해주고, len까지 반복하도록 만들었다.
- 숫자 0의 아스코드 값은 49 , 9의 아스코드 값은 57이다. 그래서 int n을 선언한 다음 charAt()을 이용하여 s의 한 글자를 구하고, int로 형변환을 시켜 n이 48보다 작을때와 57보다 클때 answer 값에 false를 추가해주었다.
- 그다음 answer값을 리턴해주었다.
👁️🗨️ 다른 사람이 짠 코드
class Solution {
public boolean solution(String s) {
boolean answer = true;
if (s.length() != 4 && s.length() != 6) return false;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) < '0' || s.charAt(i) > '9') return false;
}
return answer;
}
}
- 위의 이 코드를 보고, 부정 연산자인 != 를 이용하여 바로 false로 리턴해 줄 수 있다는 것과
- s.charAt(i) 값을 형변환 시키지 않고 그냥 char 형태로 비교 해주어 값을 구할 수 있다는 것을 알게 되었다.
import java.util.*;
class Solution {
public boolean solution(String s) {
if (s.length() == 4 || s.length() == 6) return s.matches("(^[0-9]*$)");
return false;
}
}
- 위의 이 코드는 정규표현식을 이용한 코드이다.
- "(^[0-9]*$)"은 문자열이 숫자인지 확인한다.
- matches() : String 이 문자열이 주어진 정규식과 일치하는지 여부를 알려주는 클래스이다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[JavaScript] 배열의 평균 값 (0) | 2023.04.06 |
---|---|
[JavaScript] 짝수 홀수 개수 (0) | 2023.04.05 |
[JavaScript] 아이스 아메리카노 (0) | 2023.04.05 |
[JAVA] 약수의 개수와 덧셈 (0) | 2023.04.04 |
[JAVA] 문자열 내림차순으로 배치하기 (0) | 2023.04.03 |