[BOJ] 백준 1159 농구 경기
문제링크 : https://www.acmicpc.net/problem/1159
이 문제는 test case만큼 문자를 입력받아 같은 첫번째 문자가 5개 이상 되면 출력하는 문제입니다.
문자를 입력받을때 첫 문자가 랜덤하게 들어옵니다. 이것을 Count 하기 쉽게 하려면
사전순으로 정렬하는 Sort() 함수를 사용하면 됩니다.
소스코드 :
#include// sort() 를 사용하기 위한 STL. #include using namespace std; int main() { int t; char ch[30]; cin >> t; char *p = new char[t]; // 문자(이름)을 입력 받은 후 첫번째 문자만 p에 저장. for (int i = 0; i < t; i++) { cin >> ch; p[i] = ch[0]; } // 저장된 p들을 사전순으로 정렬.( k b a -> a b k) sort(p, p + t); char check = p[0]; // cnt 배열 동적 메모리 할당시 {} 안하면 쓰레기값 들어감. char *cnt = new char[t] {}; int num = 1; int idx = 0; // 같은 문자의 개수를 세는 루프 for (int i = 1; i < t; i++) { // 같은문자라면 num++; if (check == p[i]) { num++; } // 다른문자가 나왔다면 num을 1로 바꿔주고, check도 새로운 다른문자로 교체. else { num = 1; check = p[i]; } // num이 5가 되었다면, cnt배열에 저장. if (num == 5) { cnt[idx++] = check; } } // 5개 이상인 문자가 하나도 없을때 false, 하나라도 있으면 true 인 flag 선언. bool flag = false; for (int i = 0; i < t; i++) { // cnt 의 값이 존재한다면 출력. if (cnt[i]) { cout << cnt[i]; flag = true; } } // 5개이상 문자가 없을때 항복 출력. if (!flag) cout << "PREDAJA"; cout << endl; delete[]p; delete[]cnt; }
댓글
댓글 쓰기