본문 바로가기

코딩/알고리즘

마이다스 18년 대회 1번


ID랑 패스워드를 입력받아서


소문자/숫자로만 이루어졌는지,

소문자/숫자를 하나 이상 썼는지,

연속된 문자를 3개 이상 쓰지 않았는지


체크하는 문제



맞을까? 정답 체크를 할 수 없는 대회라서 잘 모르겠다



#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <vector>
#include <string>
#include <utility>
#include <algorithm>
#include <stack>
#include <queue>
#include <functional>
#include <stdlib.h>
#include <regex>

using namespace std;

string id, pw;

int main() {
	cin >> id;
	cin >> pw;

	regex pattern("(([0-9a-z]*[0-9]+[0-9a-z]*)*)|(([0-9a-z]*[a-z]+[0-9a-z]*)*)");

	if (id.length() < 6 || id.length() > 12) {
		cout << "F" << endl;
		return 0;
	}
	else if (pw.length() < 8 || pw.length() > 16) {
		cout << "F" << endl;
		return 0;
	}

	else if (!std::regex_match(id, pattern)){
		cout << "F" << endl;
		return 0;
	}
	else if (!std::regex_match(pw, pattern)) {
		cout << "F" << endl;
		return 0;
	}

	else {
		bool flag = false;
		for (int i = 0; i < id.length() - 3; i++) {
			if (id[i + 1] == id[i] && id[i + 2] == id[i + 1]) {
				cout << "F" << endl;
				return 0;
			}
		}
		for (int i = 0; i < pw.length() - 3; i++) {
			if (pw[i + 1] == pw[i] && pw[i + 2] == pw[i + 1]) {
				cout << "F" << endl;
				return 0;
			}
		}
	}

	cout << "T" << endl;
	return 0;
}









'코딩 > 알고리즘' 카테고리의 다른 글

마이다스 18년 대회 4번  (0) 2018.05.12
마이다스 18년 대회 3번  (0) 2018.05.12
백준 2096 내려가기  (0) 2018.05.02
백준 2470 두 용액  (1) 2018.05.01
백준 11003 최솟값 찾기  (0) 2018.01.17