티스토리 뷰

문제 설명

X 사이트에서는 회원가입을 할 때 다음의 규칙을 지켜 비밀번호를 생성해야 합니다.

 

  1. 한 개 이상의 알파벳 대문자를 포함해야 합니다.
  2. 두 개 이상의 알파벳 소문자를 포함해야 합니다.
  3. 두 개 이상의 숫자를 포함해야 합니다.

생성하고자 하는 비밀번호 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를 출력한 후 프로그램을 종료한다.

 

 

 

 

 

 


 

 

GroomEdu

 

COS PRO 2급 기출문제 - C언어 - 구름EDU

YBM IT에서 시행하는 COS Pro 자격증 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.

edu.goorm.io

 

댓글