문자열 다루기 기본

김재혁·2025년 4월 23일

문제

  • 문자열 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.length() != 4 && s.length() != 6)
    {
        return false;
    }
    for(char c : s)
    {
        if(!isdigit(c))
        {
            return false;
        }
    }
    return answer;
}

풀이 방식

1) 문자열 s의 길이가 4 혹은 6 구하기
-> s.length()로 문자열의 길이(문자 수)를 구하기
2) 숫자로만 구성되어 있는지 확인
-> 범위기반 for문을 통해 문자열의 문자를 하나씩 순회 후 isdigit(c)를 통해 숫자인지 판단

if(c < '0' || c > '9' ) 를 통해 직접 비교도 가능(더 빠르긴 하지만 가독성은 떨어짐)

참고 사항

  • isdigit(c) : 숫자인지
  • isalpha(c) : 알파벳인지
  • isalnum(c) : 알파벳 또는 숫자인지
  • isupper(c) : 대문자인지
  • islower(c) : 소문자인지
  • isspace(c) : 공백인지

0개의 댓글