<알고리즘 문제풀이&연습>/[C++] 백준, 프로그래머스 등등

[프로그래머스] LEVEL 1 : 문자열 다루기 기본(C++)

BlockDMask 2018. 8. 15. 09:27
반응형

안녕하세요. BlockDMask 입니다.

날이 너무 덥네요.. 에어컨이 없으면 일상생활이 불가능할 정도에요.

그래도 힘내서 오늘도 문제를 풀어봅시다.


0. 제목

프로그래머스 LEVEL 1 '문자열 다루기 기본' 입니다.


1. 문제 설명

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성되어있는지 확인해 주는 함수, solution을 완성하세요.

예를 들어 s가 "a234" 이면 false를 리턴하고 "1234이면 true를 리턴하면 됩니다.

제한사항 s는길이가 1이상, 8이하인 문자열 입니다.


2. 풀이 과정

문제를 보면 우리가 쳐내야 할것이 두개가 있지요.

첫번째 조건은 문자열의 길이가 4 또는 6이다.

두번째 조건은 모두가 숫자 이어야한다. 입니다.


첫번째 조건은 string 클래스의 래퍼런스들 length() 또는 size() 를 이용하여 길이를 가지고와서 비교 하면 되겠습니다. 

(string 클래스 관련 포스팅은 아래 연관글 목록에 작성해 두겠습니다.)

두번째 조건은 모두가 숫자 이어야한다. <cctype>, ctype.h 헤더에 속해있는 isdigit 함수도 있지만, 아스키 코드 표를 보고 문제를 푸셨으면 해서 일부러 저렇게 풀어 보았습니다.

('0' = 15, '9' = 24) 입니다. 

구글에 아스키 코드 표 한번 쳐 보시고 이게 무엇인가 하고 한번이라도 보시면 도움이 많이 될 것입니다.



3. 소스 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <string>
#include <vector>
//#include <cctype>
 
using namespace std;
 
bool solution(string s) 
{
    //1. 길이로 쳐낸다.
    const size_t length = s.length();
    if(length != 4 && length != 6)
    {
        return false;
    }
 
    //2. 문자가 있으면 쳐낸다.
    for(size_t i=0; i<length; ++i)
    {
        //if(!isdigit(s[i]))
        if(!(s[i] >= '0' && s[i] <= '9'))
        {
            return false;
        }
    }
 
    return true;
}

cs


4. 채점


<연관글>

2017/07/10 - [<개인공부>/[C++ STL]] - [C++] string 클래스 정리

2017/07/10 - [<개인공부>/[C++ STL]] - [C++] string 클래스 만들어보기.

2017/07/11 - [<개인공부>/[C++ STL]] - [C++] string 클래스 변환(atoi, c_str()) 등 정리


읽어주셔서 감사합니다.

반응형