Code KATA/알고리즘 코드카타

[2025.01.06] 문자열 다루기 기본

iiblueblue 2025. 1. 6. 11:56

문제 설명

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

 

 

제한사항

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

 

 

입출력 예

s return
"a234" false
"1234" true

 

 

문제 풀이

풀이 언어 : C++

#include <string>
#include <vector>
#include <cctype>

using namespace std;

bool solution(string s) {
    bool answer = true;
    
    // 문자열 길이 확인
    if(s.length()!=4&&s.length()!=6)
    {
        answer=false;
        return answer;
    }
    
    // 알파벳이 포함되어 있는지 확인
    for(int i=0; i<s.length(); i++)
    {
        if(isdigit(s[i])==0)
        {
            answer=false;
            break;
        }
    }

    return answer;
}

우선 문자열의 길이부터 검사하도록 한다. 문자열의 길이부터 4나 6이 아니면 false를 반환하면 된다. 이후에 다른 처리는 하지 않고 코드가 끝난다.

 

만약 길이가 4나 6이라면 말이 좀 달라진다. 이번엔 문자열에 알파벳이 포함되어 있는지를 확인해야 한다. 문자열도 char로 이루어진 배열과 같으니 for문을 이용하여 문자열 한 글자 한 글자를 뜯어서 보도록 한다. isdigit을 이용하면 0~9사이의 문자는 0이 아닌 다른 수가 나오고 그 외의 문자는 0을 반환한다. 따라서 한 글자씩 보면서 isdigit가 0을 반환하는지 보면 알파벳을 포함하고 있는지 확인할 수 있다. 만약 isdigit(s[i])가 0을 반환한다면 answer=false로 하고 반복을 즉시 중단하면 된다.

 

결국 문자열 길이도 통과하고 알파벳이 포함되어 있는지 확인하는 반복문도 중간에 중단되지 않고 통과하면 answer은 true로 값 변경 없이 끝까지가 결국 true를 반환할 것이다.

 

참고 사항

isdigit(char c)는 매개변수로 들어온 c가 숫자인지 문자인지 판단하는데 도움을 주는 함수이다. 만약 c가 문자라면 0을 반환하고 c가 "0"~"9"라면 0이 아닌 다른 수를 반환한다. 그렇다고 하여 "0"은 0을 반환하고 "9"는 9를 반환하는 것은 아니다. 함수를 사용하기 위해서는 #include <cctype> 전처리가 필요하다.

cout<<isdigit('B')<<endl; // 0
cout<<isdigit('5')<<endl; // 0이 아닌 다른 수

 

 

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12918

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr