※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 25194번 문제인 결전의 금요일이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/25194
25194번: 결전의 금요일
곰곰이는 올해도 운동하기를 신년 목표로 삼았지만, 지금까지 헬스장을 한 번도 가지 않았다. 운동하라고 잔소리하는 당신에게, 곰곰이는 금요일에 정확히 일을 끝마치는 시점이 있다면 헬스
www.acmicpc.net
i번째까지의 일들로 만들 수 있는 "일을 끝마치는 요일"의 집합을 알고 있을 때, 여기에 i+1번째 일을 추가해 만들 수 있는 "일을 끝마치는 요일"의 집합은 i번째까지의 요일들로 얻을 수 있는 요일과 그 요일들에 i+1번째 일을 추가로 진행해 나올 수 있는 요일들의 집합이 된다.
위의 과정을 이용해 N번째까지의 일들로 만들 수 있는 요일들을 구하고, 그 요일중 금요일이 있는지를 구해 문제를 해결하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
set<int> cur, nxt;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cur.insert(0);
int N; cin >> N;
while (N--) {
int x; cin >> x;
for (auto n : cur) {
nxt.insert(n);
nxt.insert((n + x) % 7);
}
cur.clear();
swap(cur, nxt);
}
if (cur.find(4) == cur.end()) cout << "NO";
else cout << "YES";
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 25192 // C++] 인사성 밝은 곰곰이 (0) | 2022.05.15 |
---|---|
[BOJ 25199 // C++] 도박사 곰곰 (0) | 2022.05.15 |
[BOJ 5013 // C++] Death Knight Hero (0) | 2022.05.15 |
[BOJ 1774 // C++] 우주신과의 교감 (0) | 2022.05.15 |
[BOJ 14013 // C++] Unit Conversion (0) | 2022.05.15 |