티스토리 뷰
□문제 설명
X 사이트에서는 회원가입을 할 때 다음의 규칙을 지켜 비밀번호를 생성해야 합니다.
- 한 개 이상의 알파벳 대문자를 포함해야 합니다.
- 두 개 이상의 알파벳 소문자를 포함해야 합니다.
- 두 개 이상의 숫자를 포함해야 합니다.
생성하고자 하는 비밀번호 password가 매개변수로 주어질 때, 생성가능한 비밀번호면 true를 그렇지 않으면 false를 return하도록 solution함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
□매개변수 설명
생성하고자 하는 비밀번호 password가 매개변수로 주어집니다.
- password는 알파벳 대문자, 소문자, 숫자로만 이루어진 문자열입니다.
- password의 길이는 5 이상 15 이하입니다.
□예시
password | return | |
예시 #1 | "helloworld" | false |
예시 #2 | "Hello123" | true |
□주어진 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.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] >= && password[i] <= ) //빈칸
digit_count++;
}
if( ) //빈칸
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");
}
□완성 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.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");
}
□코드 분석
단계 | 과정 |
main | char 포인터 자료형의 변수 password를 선언하고, solution함수를 호출한다. |
solution | 매개변수로 주어진 비밀번호의 true/false값을 저장할 변수 answer를 선언한다. |
solution - for | for문과 if - else if문을 통해 각 글자가 대문자인지, 소문자인지, 숫자인지 판별한다. 이때 아스키코드를 사용하여 'A'~'Z'의 값은 대문자이므로 capital_count(대문자 수) 값을 증가시킨다. 'a'~'z'의 값은 대문자이므로 small_count(소문자 수) 값을 증가시킨다. '0'~'9'의 값은 숫자이므로 digit_count(숫자 수) 값을 증가시킨다. |
solution | if문을 통해 비밀번호의 조건 - 알파벳 대문자는 1개 이상 - 알파벳 소문자는 2개 이상 - 숫자는 2개 이상 임을 체크하고, 맞다면 answer = true, 틀렸다면 answer = false를 할당한다. |
main | 결과 ret를 출력한 후 프로그램을 종료한다. |
COS PRO 2급 기출문제 - C언어 - 구름EDU
YBM IT에서 시행하는 COS Pro 자격증 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.
edu.goorm.io
'[코테] > [GroomEdu]' 카테고리의 다른 글
[COS PRO 2급] 6차 8번_주어진 수와 뒤집은 수의 차 구하기 (C/C++) (0) | 2021.05.29 |
---|---|
[COS PRO 2급] 6차 7번_의자와 책상을 사고싶어요 (C/C++) (0) | 2021.05.29 |
[COS PRO 2급] 6차 5번_음료수 마시기 (빈병으로 음료수를 사세요!) (C/C++) (0) | 2021.05.29 |
[COS PRO 2급] 6차 4번_카드뽑기 게임! (도박은 안되요!) (C/C++) (0) | 2021.05.29 |
[COS PRO 2급] 6차 3번_단체 유니폼 맞추기 (C/C++) (0) | 2021.05.29 |
댓글
공지사항
최근에 올라온 글
TAG
- 연습문제
- YBM
- 자바
- Cos Pro
- groom
- 알고리즘
- CosPro
- YBM기출
- cospro기출문제
- c언어
- 코스프로
- C++
- C
- groomedu
- lv1
- programmers
- 배열활용문제
- COSPRO 2급
- lv2
- 배열
- 코딩테스트
- Java
- 기출문제
- 프로그래머스
- 구름 기출문제
- cospro기출
- 1급
- 구름에듀
- 구름에듀 기출문제
- c언어 기출문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함