[연습문제] 문자열 다루기 기본

2024. 11. 3. 18:00입문문제

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

 

프로그래머스

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

programmers.co.kr


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

예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.


제한 사항

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

입출력 예

s return
"a234" false
"1234" true

주어진 문자열에 대해 두 가지 조건을 만족하는지 확인하는 문제입니다.

1. 문자열의 길이가 4 혹은 6인지

2. 문자열이 모두 숫자로 이루어졌는지

 

어려운 문제는 아니죠? 정답 코드를 작성해보겠습니다.

 

1. C

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

bool solution(const char* s) {
    // 문자열의 길이를 측정합니다.
    int len = strlen(s);
    // 길이가 4 혹은 6이 아니라면 false를 반환합니다.
    if (len != 4 && len != 6) {
        return false;
    }
    // 반복문을 통해 숫자로만 구성돼있는지 확인합니다.
    for (int i=0; i < len; i++) {
        if (!(s[i] >= '0' && s[i] <= '9')) { 
            // 숫자 범위가 아니라면 false를 반환합니다.
            return false;
        }
    }
    // 도중에 반환되지 않았다면 true를 반환합니다.
    return true;
}

 

2. 파이썬

def solution(s):
    # s가 숫자인지 확인합니다.
    # s의 길이가 4 혹은 6인지 확인합니다.
    if (s.isdecimal() and (len(s) == 4 or len(s) == 6)):
        return True
    return False

 

파이썬은 좀 더 간단합니다.

파이썬의 str 타입에는 isdecimal 이라는 함수가 있는데, 이는 문자열이 숫자로 구성되어있는지 확인하는 함수입니다.

"a123" 같은 문자는 a가 있으므로 False가 반환되지만, "1234" 같은 문자는 모두 숫자이므로 True가 반환되죠.

isdecimal 함수를 모르더라도 C처럼 반복문을 사용하면 됩니다.

 

어려운 문제는 아니었습니다.