[BOJ] 16944 강력한 비밀번호

GirlFriend-Yerin·2020년 8월 27일
0

알고리즘

목록 보기
94/131

Note

큐브러버가 리듬 테트리스에서 비밀번호를 만들 때 규칙을 지킨 비밀번호를 만들기 위해 현재 비밀번호에서 몇자리를 더 수정 해야 하는지 구하는 문제

설명은 길지만 내용은 간단한 문제
비밀번호의 조건을 크게 길이가 6글자를 만족 하는지, 숫자 ~ 특수문자 까지의 조건을 몇가지 만족하는지 로나누어서 구한다.
둘 중 더 큰 값을 표시하는게 정답이 된다.

알고리즘

  1. 글자 수와 현재 비밀번호를 받는다.
  2. 현재 비밀번호의 길이 - 6 값을 구한다. ( 길이 미달 조건 판별 )
  3. 현재 비밀번호를 기준으로 숫자, 소문자, 대문자, 특수문자, 4가지 조건을 몇가지 만족하지 않는지 구한다.
  4. 2 와 3에서 구한 값중 큰 값을 출력한다.

소스코드

#include <iostream>

using namespace std;

const short MAX = 100;
const short WORDS_MAX = 12;

bool isSpecial(char c)
{
	char words[WORDS_MAX] = { '!', '@','#','$','%','^','&','*','(',')', '-', '+' };
	for (int i = 0; i < WORDS_MAX; i++)
		if (c == words[i])
			return true;

	return false;
}

int main()
{
	bool trigger[4] = {};
	char input[MAX] = {};
	int len, need, needTrigCount = 0;

	cin >> len >> input;

	need = 6 - len;

	for (int i = 0; i < len; i++)
	{
		if ('0' <= input[i] && input[i] <= '9')
			trigger[0] = true;
		else if ('a' <= input[i] && input[i] <= 'z')
			trigger[1] = true;
		else if ('A' <= input[i] && input[i] <= 'Z')
			trigger[2] = true;
		else if (isSpecial(input[i]))
			trigger[3] = true;
	}

	for (int i = 0; i < 4; i++)
		if (!trigger[i])
			needTrigCount++;

	cout << (need < needTrigCount ? needTrigCount : need);

	return 0;
}

2019-03-08 02:37:25에 Tistory에서 작성되었습니다.

profile
개발할때 가장 행복한 개발자입니다.

0개의 댓글