2017 카카오 신입공채 1차 테스트 2번 문제
이번에는 2번 문제 풀이 입니다. 문제를 풀면서 출제자가 얼마나 고민해서 문제를 만들었을지 느껴졌습니다. 문제에 대한 상세 설명은 카카오블로그 를 참조 바랍니다. 2번 문제는 C++ 11에 새롭게 추가된 정규표현식을 이용해서 만들어 보았습니다 #include #include #include using namespace std; // 다트 점수 3회 const int n = 3; enum DARTITEM {DART_SCORE, DART_BONUS, DART_OPTION}; struct dartResult { int score; char bonus; char option; }; void tokenizing(string str, regex reg, DARTITEM item, dartResult dart[]); void print(dartResult dart[]); void calcscore(dartResult dart[]); int main() { while (1) { string str; cout << "다트 결과 문자열을 입력하세요 (종료는 0) : "; getline(cin, str, '\n'); if (str == "0") break; regex score("((10|[0-9])[S|D|T][*|#]?)+"); if (regex_match(str, score)) { dartResult dart[n]; for (int i = 0; i < n; i++) { dart[i].score = 0; dart[i].bonus = 0; dart[i].option = 0; } tokenizing(str, regex("(10|[0-9])"), DART_SCORE, dart); tokenizing(str, regex("[S|