01
08

문제

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234" 이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

제한 사항

s는 길이 1 이상, 길이 8 이하인 문자열입니다.
s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

 

코드

더보기
#include <string>
#include <vector>

using namespace std;

bool solution(string s) {
    bool answer = true;
    
    if (s.size() == 4 || s.size() == 6)
    {
        for (int i = 0; i < s.size(); i++)
        {
            if (s[i] < '0' || s[i] > '9')
            {
                answer = false;
                break;
            }
        }
    }
    else
    {
        answer = false;
    }
    
    
    return answer;
}

코드 해설

먼저 string s의 크기가 4 이거나 6이면, 조건에 들어가기에 for문을 실행한다.

for문은 s의 크기 만큼 돌아가며, 그 중에 s의 i번째가 만약 '0' 보다 작거나 '9'보다 크면 범위 밖이기에 answer의 값을 false로 바꿔주고 break로 for문을 정지한다.

 

여기서 왜 '0'보다 작거나 '9'보다 크다는 조건은  아스키 코드를 생각하면 된다. 0보다 작은 값이면 당연하게도 1 2 3 4 5 6 7 8 값에 도달할 수 없으며 9보다 크면 숫자를 벗어나는 아스키 코드 값이 되기때문이다.

 

s의 크기가 4 혹은 6이 아니면 answer 값을 false로 바꿔준다.

COMMENT