일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- BOJ
- 운영체제
- C++
- OS
- JUCE 튜토리얼
- C++ library
- a tour of go
- go channel
- gui
- go
- tour of go
- 자료구조
- C++ gui
- 리듬게임
- JUCE library
- JUCE라이브러리
- Docker
- 프로그래밍
- 연결리스트
- C++ gui 라이브러리
- vim-go
- 공룡책
- Nebula
- c++ heap
- JUCE
- 백준
- 알고리즘
- C언어
- 코딩
- LOB
- Today
- Total
CafeM0ca
2018 마이다스챌린지 온라인 예선 후기 본문
10시부터 시작하길레 늦을까봐 아침일찍 부랴부랴 일어났다.
뒹굴거리다 10시에 딱 들어갔는데 서버 터졌었나보다. 접속이 안되길레 이메일 넣으려고 했는데 10분 기달려보니 접속 되더라. 나만 안되는건줄 알고 겁먹었었다 ㅋㅋ
주의사항을 살펴보는데 컴파일러가 gcc/g++ 4.8.5버전이더라. 언제적 유물인지.. 모카는 gcc/g++ 7.x버전대를 사용하고 있어서 C++17을 지원하는데 4.8.5버전은 행여 C++11이나 C++14조차도 지원안할까 걱정했지만 C++11은 지원하더라. 사실 모던C++와서 엄청난 확장이 이루어졌다. 그 이전은 그닥..? 그래서 C++11마저 지원하지 않는다면 string 클래스조차 사용할 수가 없어서 걱정했었다.
아무튼,, 1번문제는 역시나 쉽더라. ID/PW 입력하는 문제였다. 30분정도 걸려서 풀었다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <iostream> #include <string> using namespace std; int main() { string id,pw; bool id_len_check = false; bool pw_len_check = false; bool id_alpha_check = true; bool id_num_check = true; bool id_not_alpha_num = false; bool pw_alpha_check = false; bool pw_num_check = false; bool pw_not_alpha_num = false; int pw_sequence_cnt= 0; cin >> id; cin >> pw; for(int i=0;i<id.size();i++){ // 아이디 유효성 검사 if(id.at(i) >= 'a' && id.at(i) <= 'z') // 알파벳 포함되는가? id_alpha_check = true; else if(id.at(i) >= '0' && id.at(i) <= '9') // 숫자 포함되는가? id_num_check = true; else // 알파벳 소문자 && 숫자의 조합이 아닌경우. id_not_alpha_num = true; } id_len_check = id.size() >= 6 && id.size() <= 12 ? true : false; for(int i=0;i<pw.size();i++){ // 비밀번호 유효성 검사 if(pw.at(i) >= 'a' && pw.at(i) <= 'z') // 알파벳 포함되는가? pw_alpha_check = true; else if(pw.at(i) >= '0' && pw.at(i) <= '9') // 숫자 포함되는가? pw_num_check = true; else // 알파벳 소문자 && 숫자의 조합이 아닌경우. pw_not_alpha_num = true; if(i < pw.size()-1 && pw.at(i) == pw.at(i+1)) // 중복검사 pw_sequence_cnt++; } pw_len_check = pw.size() >= 8 && pw.size() <= 16 ? true : false; if(id_alpha_check == true && pw_alpha_check == true && id_num_check == true && pw_num_check == true && id_not_alpha_num == false && pw_not_alpha_num ==false && id_len_check == true && pw_len_check == true && pw_sequence_cnt != 3) {// 문제에 연속으로 동일한 3개의 문자 또는 숫자라 되있으므로 4는 된다. cout << "T" << endl; } else cout << "F" << endl; return 0; } | cs |
안햇갈리게 로직 처리하려고 변수를 많이 선언했다. 한번도 저런적이 없었는데 훨씬 깔끔해지더라. 좋은 경험이였다.
이런말하는건 부끄럽지만 2번문제부터 어려웠다 ㅠㅠ
회사 이름과 이름이 주어지면 이메일을 만드는 문제였다.
이름이 영어인데 Firstname, Secondname, Lastname가 있고 Secondname은 있을 수도 있고 없을 수도 있었다. 이 점에서 한번 꼬았고 Lastname에는 하이픈('-')이 들어갈 수도있고 아닐수도 있었다. 이 점에서 한번 더 꼬았다.
모카는 정규표현식으로 풀 생각을 했다.
운좋게도 찾아보니 C++11부터 regex(정규표현식)을 지원하더라. 근데 평소 정규표현식 써본적도 없어서 사용법 익히면고 이리저리 짜깁기로 맞춰가면서 수식완성하는데 1시간 30분정도 걸렸다. 그 다음에 메일 작성하는 코드 짜는데 30분정도,, vector로 처리하려다가 이메일 양식이 중복될 경우 숫자를 붙여줘야해서 map으로 갈아탔다.
컴파일 에러 고치는데 15분~20분정도?
종료 30분쯤 남기고 테스트케이스 1번은 잘 나와서 2번까지 풀 줄 알았는데 테스트케이스 2번을 보고 절망했다.
이미 만든 정규표현식이 안먹히게 이름사이에 공백이 많더라 ㅠㅠ 모카는 공백이 한개일때만 처리했는데.. 아무튼 결국은 못풀었다.
그래도 regex 사용방법은 익혔으니까 괜찮다.. ㅠㅠ 본선 물건너가버리넹..
내년엔 화이팅한드아
'잡담' 카테고리의 다른 글
[잡담]특성화고 특혜 (0) | 2018.11.25 |
---|---|
[잡담] 소프트웨어 나눔축제 후기 (0) | 2018.09.02 |
[잡담] 제4회 C++ KOREA 세미나 후기 (0) | 2018.08.04 |
책 살때팁 (0) | 2018.06.07 |
영단어장 (0) | 2017.12.07 |