6차 문제 6
문제 설명
X 사이트에서는 회원가입을 할 때 다음의 규칙을 지켜 비밀번호를 생성해야 합니다.
1. 한 개 이상의 알파벳 대문자를 포함해야 합니다.
2. 두 개 이상의 알파벳 소문자를 포함해야 합니다.
3. 두 개 이상의 숫자를 포함해야 합니다.
생성하고자 하는 비밀번호 password가 매개변수로 주어질 때, 생성 가능한 비밀번호면 true를 그렇지 않으면 false를 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
예시
| password | return |
| "helloworld" | false |
| "Hello123" | true |
코드 해석 및 전체 코드
capital_count는 문자열 중 대문자의 수, small_count는 문자열 중 소문자의 수, digit_count는 문자열 중 숫자의 수이다.
for문에서 password의 길이만큼 반복하기 위해 문자열 길이를 구하는 함수인 strlen 함수를 사용하였다.
if문 첫번째는 대문자인지 판단하는 조건으로, 문자열 password[i]가 'A' ~ 'Z'이면 captital_count를 1 증가한다.
if문 두번째는 소문자인지 판단하는 조건으로, 문자열 password[i]가 'a' ~ 'z'가 있으면 small_count를 1 증가한다.
if문 세번째는 숫자인지 판단하는 조건으로, 문자열 password[i]가 '0' ~ '9'가 있으면 digit_count를 1 증가한다.
password는 문자열이므로 인트형 0 ~ 9가 아닌 문자형 '0' ~ '9'로 해야 한다.
비밀번호에서 한 개 이상 대문자, 두 개 이상 소문자, 두 개 이상 숫자를 포함해야 하므로
if문에서 조건을 모든 조건을 만족한다면 answer에 true를 저장하고
만족하지 않다면 answer에 false를 저장한다.
예시 1
| password[i] | ++ |
| h | small_count++ |
| e | small_count++ |
| l | small_count++ |
| l | small_count++ |
| o | small_count++ |
| w | small_count++ |
| o | small_count++ |
| r | small_count++ |
| l | small_count++ |
| d | small_count++ |
예시 1은 captital_count = 0, small_count = 10, digit_count = 0이므로 if문 조건을 만족하지 않는다.
예시 2
| password[i] | ++ |
| H | captital_count++ |
| e | small_count++ |
| l | small_count++ |
| l | small_count++ |
| o | small_count++ |
| 1 | digit_count++ |
| 2 | digit_count++ |
| 3 | digit_count++ |
예시 2는 captital_count = 1, small_count = 4, digit_count = 3이므로 if문 조건을 만족한다.
#include <stdio.h>
#include <stdbool.h>
bool solution(char* password) {
bool answer;
int capital_count = 0, small_count = 0, digit_count = 0;
for (int i = 0; i < strlen(password); i++) {
if (password[i] >= 'A' && password[i] <= 'Z')
capital_count++;
else if (password[i] >= 'a' && password[i] <= 'z')
small_count++;
else if (password[i] >= '0' && password[i] <= '9')
digit_count++;
}
if (capital_count >= 1 && small_count >= 2 && digit_count >= 2)
answer = true;
else
answer = false;
return answer;
}
int main() {
char* password1 = "helloworld";
bool ret1 = solution(password1);
printf("solution 함수의 반환 값은 %s 입니다.\n", ret1 ? "true" : "false");
char* password2 = "Hello123";
bool ret2 = solution(password2);
printf("solution 함수의 반환 값은 %s 입니다.\n", ret2 ? "true" : "false");
}
구름 goormedu COS PRO 2급 기출문제 - C언어
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
| [No.58] 6차 문제 8 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.30 |
|---|---|
| [No.57] 6차 문제 7 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.30 |
| [No.55] 6차 문제 5 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.30 |
| [No.54] 6차 문제 4 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.29 |
| [No.53] 6차 문제 3 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.29 |
댓글