문제 요구사항
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
풀이
class Solution {
public boolean solution(String s) {
boolean answer = false;
//길이가 4 또는 6인지
if(s.length()==4 || s.length()==6){
//모든 자리가 숫자인지
for(int i = 0;i< s.length();i++){
char each = s.charAt(i);
//ascii 코드값 0부터 9까지 : 48부터 57 사이
if(each < 48 || each > 57) return false;
}
answer = true;
}
return answer;
}
}
실패 요인
boolean answer의 실행 흐름에 따른 변화를 제대로 추적하지 않은 결과, 참/거짓이 필요할 때 return되지 않음.
모범답안
class Solution {
public boolean solution(String s) {
if(s.length() == 4 || s.length() == 6){
try{
int x = Integer.parseInt(s);
return true;
} catch(NumberFormatException e){
return false;
}
}
else return false;
}
}
import java.util.*;
class Solution {
public boolean solution(String s) {
if (s.length() == 4 || s.length() == 6) return s.matches("(^[0-9]*$)");
return false;
}
}
class Solution {
public boolean solution(String s) {
return (s.length() != 4 && s.length() != 6) || (s.split("[0-9]").length > 0) ? false:true;
}
}
잘한 점
ascii 코드로 숫자 검증 조건을 찾은 것
인사이트
문자열의 길이는 .length()로 구하고, 배열의 길이는 괄호가 없는 .length로 구한다.
ascii 코드값 - 대소문자, 숫자는 익히는 것이 좋다
다양한 조건을 적용한 후 boolean을 반환할 때는 흐름을 잘 보자.
Github 링크
https://github.com/ginsengcandy/Coding-Test-Practice/commit/bccf2ae0b5d6b788886266b97486b83e8e6ddbce
[level 1] Title: 문자열 다루기 기본, Time: 0.04 ms, Memory: 70.2 MB -BaekjoonHub · ginsengcandy/Coding-Test-Practice@bc
+ <p>문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.</p>
github.com
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/12918
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'Algorithm' 카테고리의 다른 글
| [알고리즘] 최대공약수와 최소공배수 구하기 (0) | 2026.02.04 |
|---|---|
| [알고리즘] 행렬의 덧셈 (0) | 2026.02.03 |
| [알고리즘] 부족한 금액 계산하기 (0) | 2026.02.02 |
| [알고리즘] 문자열 내림차순으로 배치하기 (0) | 2026.01.29 |
| [알고리즘] 약수의 개수와 덧셈 (0) | 2026.01.29 |