[Level1] 문자열 다루기 기본 답안 및 풀이
◇ 문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
◇ 제한 조건
- s는 길이 1 이상, 길이 8 이하인 문자열입니다
◇ 입출력 예시
s | return |
"a234" | false |
"1234" | true |
◇ 초기 내용
※ [출처] 프로그래머스-코딩테스트 연습-문제명
※ 초기 내용을 참고하여 문제에 맞는 코드를 작성하세요.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
bool solution(const char* s) {
bool answer = true;
return answer;
}
◇ 답안
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
bool solution(const char* s) {
bool answer = true;
int cnt = 0;
if(strlen(s)!=6&&strlen(s)!=4){
return false;
}
for(int i = 0; i<strlen(s); i++){
if(s[i]>='0' && s[i]<='9'){
cnt++;
}
}
if(cnt != strlen(s)){
return false;
}
return answer;
}
◇ 답안 힌트
▶ 가장 먼저 문자열의 길이를 확인 후, 4또는 6이 아니면 바로 false반환
▶ 0~9사이의 값을 확인한 변수가 문자열의 길이와 같지 않으면 false반환
◇ 답안 풀이
(※ 실행 흐름 순으로 해석됩니다.)
bool solution(const char* s) {
bool answer = true;
int cnt = 0;
//문자열의 길이가 6또는 4가 아니면 false를 return함
if(strlen(s)!=6&&strlen(s)!=4){
return false;
}
//문자열의 내용이 0~9사이인지 확인하고, 0~9사이이면 cnt+1
for(int i = 0; i<strlen(s); i++){
if(s[i]>='0' && s[i]<='9'){
cnt++;
}
}
//위에서 체크한 0~9사이의 값이 전체 문자열의 길이와 같으면, 전체가 0~9사이의 값으로 이루어진것이지만, 둘의 값이 다르면 하나라도 0~9사이의 값이 아닌게 문자열에 들어있는 것으로 알고 false를 return
if(cnt != strlen(s)){
return false;
}
//위의 return false하는 예외상황이 아니면 모두 true로 반환
return answer;
}
◇ 실행결과
◇ 출처
https://programmers.co.kr/learn/challenges
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr