본문 바로가기
알고리즘/프로그래머스

[C++] 문자열 다루기 기본(연습문제)

by 민-Zero 2020. 3. 26.

문제의 목표는 전달받은 문자열 s가 길이가 4 또는 6을 만족하고 숫자로만 이루어져 있는지를 확인하여 만족하면 True를 아니라면 False를 반환하면 된다.

예를 들어 s가 "12345"로 주어진다면 길이가 4 또는 6이 아니므로 False를 반환하고 "0000"으로 주어진다면 길이가 4이고 숫자로만 이루어져 있으므로 True를 반환하면 된다.

 

설계 및 구현

구현을 위해 주어진 함수는 반환 타입이 bool이며 string타입의 매개변수 s를 가지는 함수이다. 구현을 위한 내용은 파이썬을 사용한 풀이에서 정리한 것을 그대로 사용하면 다음과 같다.

① s의 길이가 4 또는 6 인지 확인

② s가 숫자로만 이루어진 문자열인지 확인

③ 위 두가지 조건을 and 연산을 통해 둘 다 참이라면 True를 반환 아니면 False를 반환

위와 같은 형태로 구현했을 때 채점 시 2문제 정도에서 오류가 발생한다. 아직 어떤 케이스에서 오류가 나는지 알아내지 못했다.

 

따라서 이와같이 살짝 바꾸어주니 오류가 발생하지 않는다. 우선 파이썬과 같이 isdigit() 함수가 존재하나 C++에서는 문자열의 문자 하나씩 확인을 한다. 따라서 우선 문자열에 숫자가 아닌 수가 있다면 false를 반환하도록 한다. 그게 아니라면 반복문을 빠져나와 문자열의 길이를 확인 4 또는 6의 길이가 아니라면 false 맞다면 true를 반환하도록 한다.

 

위의 경우에는 테스트케이스를 통과할 수 있다.

댓글