[프로그래머스] Level1 - 문자열 다루기 기본

ERror.ASER·2020년 7월 22일
0

프로그래머스

목록 보기
19/54
post-thumbnail

프로그래머스(Level1) - 문자열 다루기 기본


문제 설명

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

제한사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.

입출력 예


풀이

#include <iostream>
#include <string>

using namespace std;

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

s[i] - '0'가 9보다 크면 해당 자리의 문자는 숫자가 아닌것을 알 수 있다. 9보다 큰 경우는 숫자가 아니라고 판단하여 answer를 false로 바꿔주면 된다. s[i] - '0'와 같이 자릿수가 숫자인지 아닌지 알려주는 isdigit함수가 있다.

  • int isalnum (int c);
    c가 10진수인지 대문자 또는 소문자인지 확인하는 함수이다. c가 숫자 또는 문자인 경우 0이 아닌 값(true), 아닌경우 0(false)을 반환한다.
  • int isalpha (int c);
    c가 알파벳 문자인지 확인하는 함수이다. c가 알파벳 문자인 경우 0이 아닌 값(true), 아닌경우 0(false)을 반환한다.
  • int isdigit (int c);
    c가 10진수인 경우 0이 아닌 값(true), 10진수가 아닌경우 0(false)을 반환한다.
#include <iostream>
#include <string>

using namespace std;

bool solution(string s) {
    bool answer = true;
    
    for(int i=0; i<s.size(); i++){
        if(!isdigit(s[i]))
            answer = false;
    }
    
    return s.size() == 4 || s.size() == 6 ? answer : false;
}

참조

profile
지우의 블로그

0개의 댓글