728x90
문제
어떤 웹사이트에 회원가입하기 위해서 다음과 같은 비밀번호 조건들이 있다. 입력으로 들어온 문자열이 다음 조건을 만족하는지 확인하는 프로그램을 작성하시오.
- 비밀번호는 8자 이상 15자 이하이어야 한다.
- 비밀번호에 영어 대문자가 반드시 포함되어야 한다.
- 비밀번호에 영어 소문자가 반드시 포함되어야 한다.
- 비밀번호에 숫자가 반드시 포함되어야 한다.
- 비밀번호에 특수문자가 반드시 포함되어야 한다.
입력 형식
입력으로 들어오는 문자열의 최대 길이는 100자이다. 문자열은 영어 대소문자, 숫자, 그리고 특수문자로만 구성되어있다. 특수문자는 `!@#$%^&*()-=_+|;:'"/?,.<>~[]{}``만 주어진다.
출력 형식
입력으로 들어온 문자열이 웹사이트에서 요구하는 조건을 만족하는 문자열이라면 valid를 출력하고, 그렇지 않다면 invalid를 출력한다.
입력 예제 1
{NYPC2019}
출력 예제 1
invalid
입력 예제 2
{NYPc2019}
출력 예제 2
valid
채점 방식
입력 케이스들 각각에 대해 동일한 점수가 배분된다.
이 문제는 연습 문제이므로 점수가 성적에 합산되지 않습니다.
나의 풀이
check변수에 1을 넣고 시작해서 조건이 하나라도 일치하지 않는다면 0을 넣어서 출력할 때
check변수에 1이 있다면 valid을, 0이 있다면 invalid를 출력해주었다.
1. 글자의 크기가 8~15가 아니라면 check에 0을 넣는다.
2. 대소문자, 숫자, 특수문자의 아스키코드를 보면 33~126 사이에 있는 숫자이다.
그리고 입력 형식을 잘 보면 특수문자에 역슬래쉬(아스키코드: 92)는 포함되지 않는다.
그래서 각 글자가 92거나, 33~126에 포함되지 않는다면 check에 0을 넣는다.
3. check가 참이라면 valid출력, 거짓이라면 invalid출력.
- 소스코드
#include <iostream>
#include <string>
using namespace std;
int main() {
string pw;
int check = 1;
cin >> pw;
if (8 > pw.size() || pw.size() > 15)
check = 0;
else
for (int i = 0; i < pw.size(); i++) {
if (pw[i] == 92) {
check = 0;
break;
}
if (33 > pw[i] || pw[i] > 126) {
check = 0;
break;
}
}
if (check) cout << "valid";
else cout << "invalid";
}
728x90
'알고리즘 > 문제' 카테고리의 다른 글
[codeground] Practice. 11. 개구리 뛰기 (0) | 2020.08.26 |
---|---|
[codeground] Practice. 3. 시험 공부 (0) | 2020.08.26 |
[codeground] Practice. 2. 프로그래밍 경진대회 (0) | 2020.08.22 |
[codeground] Practice. 1. 숫자 골라내기 (0) | 2020.08.21 |
[백준] 16180. New House <C++> (0) | 2020.08.11 |
댓글