간단하다. 왜 레벨 2인지 모르겠고 왜 자료구조문제로 분류되어 있는지 잘 모르겠다. 의도한 방법으로 푼게 아닐지도..;.
#include#include class PoliticalParty { //정당 int hartalParameter; //휴업지수 public: PoliticalParty(int _hartalParameter) { hartalParameter = _hartalParameter; } bool isHartal(int day) { if ((day % 7 == 0) || (day % 7 == 6)) return false; if (day % hartalParameter == 0) return true; return false; } }; class Hartal { int days; std::vector politicalPartys; public: Hartal(int _days) { days = _days; } void input(int hartalParameter) { PoliticalParty pp(hartalParameter); politicalPartys.push_back(pp); } bool isHartal(int day) { std::vector ::iterator it; for (it = politicalPartys.begin(); it != politicalPartys.end(); ++it) { if ((*it).isHartal(day)) return true; //어느정당이든 발견되면 그날은 휴업 } return false; } int getNumberOfHartalDays() { int counter = 0; for (int i = 1; i <= days; ++i) if (isHartal(i)) counter++; return counter; //휴업일수를 세어봄 } }; int main() { int numberOfCase; std::cin >> numberOfCase; for (int i = 0; i < numberOfCase; ++i) { int days; std::cin >> days; Hartal hartal(days); int numberOfPartys; std::cin >> numberOfPartys; for (int j = 0; j < numberOfPartys; ++j) { int hartalParameter; std::cin >> hartalParameter; hartal.input(hartalParameter); } std::cout << hartal.getNumberOfHartalDays() << std::endl; } return 0; }
친구랑 같이 풀었는데, 저희랑 조금 다르지만, 메모리 사용적인 부분에선 무척 적은게 돋보이네요. ; ) 잘 보았습니다.
PC/UVa ID : 110203/10050 개요 특정 기간 N일 동안, 동맹 휴업을 하는 정당들의 휴업일 총 수를 구하라는 것이다. 정당들의 수를 P라고 했을 때, 정당들의 휴업 지수를 각 h1 h2 .. 라고 한다. 이 휴업지수는 그 지수일자 만큼 일 한 뒤에 1번 쉰다는 뜻이다. 특정 기간 N일 중 1일 째는 무조건 일요일이며, 예외적으로 금요일, 토요일에는 휴업을 하지 않는다. . 여기까지 일반적인 설명이고, 자세한것은 링크를 보길 바란다…