https://www.acmicpc.net/problem/20923
๋ฌธ์
์ธ๊ฐ์ด ๊ฐ์ฅ ์ฌ์ฌํจ์ ๋๋๋ค๋ ์คํ 1์ 22๋ถ, ๋๋์ ์์ฐ์ด๋ ์ซ์ ํ ๋ฆฌ ๊ฐ๋ฆฌ ๊ฒ์์ ํ๋ ค ํ๋ค. ์ซ์ ํ ๋ฆฌ ๊ฐ๋ฆฌ ๊ฒ์์ ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
[์ซ์ ํ ๋ฆฌ ๊ฐ๋ฆฌ ๊ฒ์์ ๊ท์น]
- ์ด๊ธฐ์ ๋๋์ ์์ฐ์ด๋ ๊ฐ๊ฐ N์ฅ์ ์นด๋๋ก ์ด๋ฃจ์ด์ง ๋ฑ์ ๋ฐฐ๋ถ๋ฐ๋๋ค. ๊ฒ์ ์์ ์ ๊ทธ๋ผ์ด๋๋ ๋น์ด์๋ ์ํ์ด๋ค.
- ๋ฑ์ ์ซ์๊ฐ ๋ณด์ด์ง ์๊ฒ ์นด๋๋ฅผ ๋ค์ง์ด ์์ ๋์ ์นด๋ ๋๋ฏธ๋ฅผ ์๋ฏธํ๋ค. ๋๋์ ์์ฐ์ด๋ ์์ ์ ๋ฑ์ ๊ฐ์ง๊ณ ๊ฒ์์ ์งํํ๊ฒ ๋๋ค.
- ๊ทธ๋ผ์ด๋๋ ๋๋์ ์์ฐ์ด๊ฐ ๊ฒ์์ ์งํํ๋ฉฐ ์์ ์ด ๊ฐ์ง ๋ฑ์์ ๊ฐ์ฅ ์์ ์๋ ์นด๋๋ฅผ ๋ด๋ ค๋๊ฒ ๋๋ ๋ ์ ์๋ฏธํ๋ค. ๊ทธ๋ผ์ด๋์ ์นด๋๋ฅผ ๋ด๋ ค๋์ ๋๋ ์์ ์ ๊ทธ๋ผ์ด๋์ ์นด๋๋ฅผ ๋ด๋ ค๋์ผ๋ฉฐ, ๊ทธ๋ผ์ด๋์ ์นด๋ ๋๋ฏธ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ๊ธฐ์กด์ ๋ง๋ค์ด์ง ์นด๋ ๋๋ฏธ ์๋ก ์นด๋๋ฅผ ๋ด๋ ค๋๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค.
- ๋๋๋ฅผ ์์์ผ๋ก ๋๋์ ์์ฐ์ด๊ฐ ์ฐจ๋ก๋๋ก ๊ทธ๋ผ์ด๋์ ์์ ์ด ๊ฐ์ง ๋ฑ์์ ๊ฐ์ฅ ์์ ์์นํ ์นด๋๋ฅผ ๊ทธ๋ผ์ด๋์ ์ซ์๊ฐ ๋ณด์ด๋๋ก ๋ด๋ ค๋๋๋ค.
- ์ข
์ ๋จผ์ ์น๋ ์ฌ๋์ด ๊ทธ๋ผ์ด๋์ ๋์ ์๋ ์นด๋ ๋๋ฏธ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ๊ฐ ์ ์๋ค. ์ข
์ ์น ์ ์๋ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๊ทธ๋ผ์ด๋์ ๋์ ์๋ ๊ฐ๊ฐ์ ์นด๋ ๋๋ฏธ์์ ๊ฐ์ฅ ์์ ์์นํ ์นด๋์ ์ซ์ ํฉ์ด 5 ๊ฐ ๋๋ ์๊ฐ ์์ฐ์ด๊ฐ ์ข ์ ์น๋ค. ๋จ, ์ด๋ ์ชฝ์ ๊ทธ๋ผ์ด๋๋ ๋น์ด์์ผ๋ฉด ์๋๋ค.
- ๊ทธ๋ผ์ด๋์ ๋์ ์๋ ๊ฐ๊ฐ์ ์นด๋ ๋๋ฏธ์์ ๊ฐ์ฅ ์์ ์์นํ ์นด๋์ ์ซ์๊ฐ 5 ๊ฐ ๋์ค๋ ์๊ฐ ๋๋๊ฐ ์ข ์ ์น๋ค.
- ์ข
์ ์ณค๋ค๋ฉด, ์๋๋ฐฉ์ ๊ทธ๋ผ์ด๋์ ์๋ ์นด๋ ๋๋ฏธ๋ฅผ ๋ค์ง์ด ์์ ์ ๋ฑ ์๋๋ก ๊ทธ๋๋ก ํฉ์น ํ ์์ ์ ๊ทธ๋ผ์ด๋์ ์๋ ์นด๋ ๋๋ฏธ ์ญ์ ๋ค์ง์ด ์์ ์ ๋ฑ ์๋๋ก ๊ทธ๋๋ก ๊ฐ์ ธ์ ํฉ์น๋ค.
- ์ข ์ ์ณ์ ๊ทธ๋ผ์ด๋์ ์๋ ์นด๋ ๋๋ฏธ๋ฅผ ๊ฐ์ ธ๊ฐ๋ ํ์๋ ๊ฒ์์ ์งํ ์์์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค.
- โM M ๋ฒ ์งํ ํ ๊ฐ์์ ๋ฑ์ ์๋ ์นด๋์ ๊ฐ์๊ฐ ๊ฐ๋ค๋ฉด ๋น๊ธด ๊ฒ์ผ๋ก ๋ณธ๋ค. ๊ฒ์ ์งํ ๋์ค ์์ ์ ๋ฑ์ ์๋ ์นด๋์ ์๊ฐ 0 ๊ฐ๊ฐ ๋๋ ์ฆ์ ์๋๋ฐฉ์ด ์น๋ฆฌํ ๊ฒ์ผ๋ก ๋ณธ๋ค. (๋ ์ค ํ ๋ช ์ด 2~4๋ฒ๊น์ง์ ๊ณผ์ ์ ์งํํ๋ ๊ฒ์ 1 ๋ฒ ์งํํ ๊ฒ์ผ๋ก ๋ณธ๋ค.) ๋ฒ ์งํํ ํ ์์ ์ ๋ฑ์ ๋ ๋ง์ ์นด๋๋ฅผ ์ง๋ ์ฌ๋์ด ์น๋ฆฌํ๊ณ
๊ฒ์์ M ๋ฒ ์งํํ ํ ์น๋ฆฌํ ์ฌ๋์ ๋๊ตฌ์ผ๊น?
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ๋๋์ ์์ฐ์ด๊ฐ ๊ฐ์ง๋ ์นด๋์ ๊ฐ์ N (1≤N≤30000 )๊ณผ ๊ฒ์ ์งํ ํ์ M (1≤M≤2500000 )์ด ์ฃผ์ด์ง๋ค.
๋์งธ ์ค๋ถํฐ N ๊ฐ์ ์ค์๋ ๋์ด์ฐ๊ธฐ๋ก ๊ตฌ๋ถํ์ฌ ๋๋์ ์์ฐ์ด๊ฐ ๊ฐ์ง ๋ฑ์ ๋งจ ์๋์ ์์นํ ์นด๋์ ์ ํ ์๋ ์๋ถํฐ ๋งจ ์์ ์์นํ ์นด๋์ ์ ํ ์๊น์ง ์ฐจ๋ก๋๋ก ์ฃผ์ด์ง๋ค. (๊ฐ๊ฐ์ ์นด๋๋ 1 ์ด์ 5 ์ดํ์ ์์ฐ์๊ฐ ์ ํ์๋ค.)
์ถ๋ ฅ
๊ฒ์์ ์ด๊ธด ์ฌ๋์ด ๋๋๋ผ๋ฉด do๋ฅผ ์ถ๋ ฅํ๊ณ ๊ฒ์์ ์ด๊ธด ์ฌ๋์ด ์์ฐ์ด๋ผ๋ฉด su๋ฅผ ์ถ๋ ฅํ๋ค. ๋น๊ฒผ์ ๊ฒฝ์ฐ, dosu๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <deque>
using namespace std;
typedef deque<int> d;
d doCard, suCard;
d doGround, suGround;
// ์ข
์น์ฌ๋์ ์นด๋๋ฑ์ ์๋์ ๊ทธ๋ผ์ด๋ ๋ฑ๊ณผ ์์ ์ ๊ทธ๋ผ์ด๋ ๋ฑ์ ํฉ์น๋ ํฉ์
void mergeCard(d &winnerCard, d &loserGround, d &winnerGround) {
for(int i=0; !loserGround.empty(); i++) {
winnerCard.push_front(loserGround.front());
loserGround.pop_front();
}
for(int i=0; !winnerGround.empty(); i++) {
winnerCard.push_front(winnerGround.front());
winnerGround.pop_front();
}
}
// ๊ทธ๋ผ์ด๋์ ์นด๋๋ฅผ ๋ด๋์๋๋ง๋ค ์ข
์น ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ์ฌ ์ข
์ ์น๋ค.
void hitBell() {
// groundTop=0 : ๊ทธ๋ผ์ด๋๊ฐ ๋น์ด์์
int doGroundTop=0, suGroundTop=0;
if(!doGround.empty())
doGroundTop = doGround.back();
if(!suGround.empty())
suGroundTop = suGround.back();
// ์์ฐ์ด๊ฐ ์ข
์นจ (๊ทธ๋ผ์ด๋๊ฐ ๋น์ด์์ง ์์์ผํ๊ณ , ํฉ์ด 5์ฌ์ผํจ)
if(doGroundTop!=0 && suGroundTop!=0 && doGroundTop+suGroundTop==5)
mergeCard(suCard, doGround, suGround);
// ๋๋๊ฐ ์ข
์นจ (๋์ค ํ๋๊ฐ 5์ฌ์ผํจ)
if(doGroundTop==5 || suGroundTop==5)
mergeCard(doCard, suGround, doGround);
// ์ข
์์นจ
return;
}
string solution(int n, int m) {
// ํ ๋ฆฌ๊ฐ๋ฆฌ ์ํ
bool doTurn = true;
while(m--){
if(doTurn) {
// ์ธ๋ฑ์ค๊ฐ ์์์๋ก ์๋์ชฝ์ ์์นํ ์นด๋ => back์ด ์นด๋์ ๊ผญ๋๊ธฐ์ชฝ ๋ฐฉํฅ์ด๋ค
doGround.push_back(doCard.back());
doCard.pop_back();
if(suCard.empty() || doCard.empty()) break; // ๋ ์ค ํ๋ช
์ด๋ผ๋ ๊ฐฏ์๊ฐ 0์ด๋๋ฉด ๊ฒ์ ์ข
๋ฃ
hitBell();
} else {
suGround.push_back(suCard.back());
suCard.pop_back();
if(suCard.empty() || doCard.empty()) break;
hitBell();
}
doTurn = !doTurn;
}
// ์น์ ๊ฒฐ์
if(suCard.size() > doCard.size())
return "su";
else if (suCard.size() < doCard.size())
return "do";
else
return "dosu";
}
int main() {
int n,m;
cin >> n >> m;
doCard.assign (n,0);
suCard.assign (n,0);
for(int i=0; i<n; i++)
cin >> doCard[i] >> suCard[i];
cout << solution(n, m);
return 0;
}
/*
*/
'๐ฒ Altu-Bitu > ๊ตฌํ&์๋ฎฌ๋ ์ด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ S4][C++] ๋ฐฑ์ค 1244๋ฒ: ์ค์์น ์ผ๊ณ ๋๊ธฐ (0) | 2022.10.17 |
---|---|
[BOJ S3][C++] ๋ฐฑ์ค 2503๋ฒ: ์ซ์ ์ผ๊ตฌ (2%, 4%) (0) | 2022.10.06 |
[BOJ G5][C++] ๋ฐฑ์ค 20055๋ฒ: ์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์์ ๋ก๋ด (0) | 2022.10.03 |
[BOJ][C++] ๋ฐฑ์ค 14891๋ฒ: ํฑ๋๋ฐํด (0) | 2022.09.20 |
[BOJ S3][C++] ๋ฐฑ์ค 1213๋ฒ: ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ (0) | 2022.09.19 |