문제
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234" 이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
코드
더보기
#include <string>
#include <vector>
using namespace std;
bool solution(string s) {
bool answer = true;
if (s.size() == 4 || s.size() == 6)
{
for (int i = 0; i < s.size(); i++)
{
if (s[i] < '0' || s[i] > '9')
{
answer = false;
break;
}
}
}
else
{
answer = false;
}
return answer;
}
코드 해설
먼저 string s의 크기가 4 이거나 6이면, 조건에 들어가기에 for문을 실행한다.
for문은 s의 크기 만큼 돌아가며, 그 중에 s의 i번째가 만약 '0' 보다 작거나 '9'보다 크면 범위 밖이기에 answer의 값을 false로 바꿔주고 break로 for문을 정지한다.
여기서 왜 '0'보다 작거나 '9'보다 크다는 조건은 아스키 코드를 생각하면 된다. 0보다 작은 값이면 당연하게도 1 2 3 4 5 6 7 8 값에 도달할 수 없으며 9보다 크면 숫자를 벗어나는 아스키 코드 값이 되기때문이다.
s의 크기가 4 혹은 6이 아니면 answer 값을 false로 바꿔준다.
'코딩 > 코드 문제 묶음' 카테고리의 다른 글
| [프로그래머스] 최대공약수와 최소공배수 (0) | 2025.01.11 |
|---|---|
| [프로그래머스] 행렬의 덧셈 (0) | 2025.01.09 |
| [프로그래머스] 문자열 내림차순 (1) | 2025.01.06 |
| [프로그래머스] 약수의 개수와 덧셈 (2) | 2025.01.04 |
| [프로그래머스] 제일 작은 수 제거하기 (0) | 2024.12.31 |