- 문제 링크 : boj.kr/23085
- 난이도 : G4
- 태그 : BFS
23085번: 판치기
판치기는 \(N\)개의 동전을 바닥에 놓고, 임의의 동전들을 뒤집는 것을 반복하여 모두 뒷면이 보이는 상태로 바꾸면 이기는 게임이다. 판치기 경력 20년에 빛나는 치훈이는 판치기 최고의 극의, "\
www.acmicpc.net
코드
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define INF 0x7FFFFFFF
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n, k;
cin >> n >> k;
vector<int> visit(n+1, -1);
string s;
cin >> s;
int cnt = 0;
for(auto u : s) {
if(u == 'H') cnt++;
}
visit[cnt] = 0;
queue<int> _q;
_q.push(cnt);
while(!_q.empty()) {
int h = _q.front(); _q.pop();
int t = n - h;
for(int i = 0; i <= k; i++) {
if(t >= i && h >= k-i) {
if(visit[h + i*2-k] != -1) continue;
visit[h + i*2-k] = visit[h]+1;
_q.push(h + i*2-k);
}
}
}
cout << visit[0];
return 0;
}
풀이
앞면의 갯수를 기준으로 BFS를 해준다.
728x90
'PS' 카테고리의 다른 글
BOJ 20159 : 동작 그만. 밑장 빼기냐? (0) | 2024.04.08 |
---|---|
BOJ 26651 : 팬램그 (1) | 2024.04.07 |
BOJ 28449 : 누가 이길까 (0) | 2024.04.05 |
BOJ 29810 : 배신자 (0) | 2024.04.04 |
BOJ 10589 : 마법의 체스판 (0) | 2024.04.03 |