Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 그래프
- Team Fortress 2
- BFS
- 백트래킹
- 문자열
- 다이나믹 프로그래밍
- 투 포인터
- 시뮬레이션
- 트리
- 다익스트라
- 알고리즘
- 수학
- 백준
- Unreal Engine 5
- 유니온 파인드
- 자료구조
- 구현
- c++
- 스택
- 그리디 알고리즘
- XR Interaction Toolkit
- 우선순위 큐
- 유니티
- ue5
- 누적 합
- VR
- 브루트포스
- 정렬
- DFS
- 재귀
Archives
- Today
- Total
1일1알
백준 25194번 결전의 금요일 C++ (골드5) 본문
https://www.acmicpc.net/problem/25194
주어진 수들을 더하는 경우중에 7로 나누었을때 나머지가 4가 되는 경우가 있으면 목요일에 일을 끝내고 금요일에 헬스장을 갈 수 있다.
결국 나머지를 구하는 문제이기 때문에 주어진 수들을 7로 나눈 나머지들을 저장하여 나머지가 1~6인 경우의 수가 몇개인지로 관리하였다. 만약 7로 나누었을때 나머지가 0이면 더해도 의미가 없는 숫자이기 때문에 제외했다.
그리고 백트래킹을 통해 가능한 경우를 탐색하여 7로 나누었을때 나머지가 4인 경우를 찾았는데, 사실 7로 나누기 전의 숫자들로 백트래킹을 진행하면 숫자의 경우가 최대 1000개이기때문에 시간초과가 난다.
하지만 7로 나눈 나머지를 통해 1~6이 몇개인지로 관리하고 있기 때문에 정렬이 되어있는 상태이고 가능하다면 조금만 백트래킹을 돌려도 7로 나누었을때 4가 되는 경우는 나온다. 찾은뒤부터는 바로 return을 하여 필요없는 탐색은 하지 않는다.
#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <list>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <limits.h>
using namespace std;
using int64 = long long;
vector<int> v(7, 0);
bool ans = false;
void BT(int val) {
if (ans) return;
if (val % 7 == 4) {
ans = true;
return;
}
for (int i = 1; i <= 6; i++)
{
if (v[i] == 0) continue;
v[i]--;
BT(val + i);
v[i]++;
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
int a;
cin >> a;
if (a % 7 == 0) continue;
v[a % 7]++;
}
BT(0);
if (ans) cout << "YES";
else cout << "NO";
}
'알고리즘' 카테고리의 다른 글
백준 25556번 포스택 C++ (골드5) (0) | 2024.06.03 |
---|---|
백준 17953번 디저트 C++ (골드5) (0) | 2024.06.02 |
백준 15488번 나이트가 체스판을 벗어나지 않을 확률 C++ (골드5) (0) | 2024.06.01 |
백준 1930번 정사면체 C++ (골드4) (0) | 2024.05.31 |
백준 17349번 1루수가 누구야 C++ (골드4) (0) | 2024.05.30 |