본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.56] 6차 문제 6 / cos pro 2급 c언어 기출 문제

by M개발자 2021. 5. 30.
반응형

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");
}

 


cos pro 2급 기출문제

github

 

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

 

반응형

댓글