카테고리 없음

백준 20923번 숫자 할리갈리 게임(C++)

그린푸딩 2024. 2. 13. 00:43
728x90
반응형

문제가 도도 수연이 동시에 그라운드에 카드를 놓는지 알았는데 도도-> 수연 -> 도도 이렇게 차례로 놓는게 각각 1번씩 카운팅되는것이었다..

 

#include <iostream>
#include <vector>
#include<deque>

using namespace std;

deque<int>dodo;
deque<int>su;

deque<int>ground_dodo;
deque<int>ground_su;

//동시애 그라운드에 카드를 내려놓는게 아니라 한명씩 내려놓고 종칠사람 


int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n, m; 
	cin >> n >> m;

	int d, s;
	for (int i = 0; i < n; i++) {
		cin >> d >> s;
		dodo.push_front(d);
		su.push_front(s);
	}

	//게임중 덱이 0이되는경우? - 그라운드에 내려놓을때 
	bool dodo_turn = true;
	bool su_turn = false;


	//m번 진행함 
	for (int i = 0; i < m; i++) {

		//2번 - 자신의 그라운드에 덱 제일 위 카드 올리기

		if (dodo_turn) {
			if (dodo.size() != 0) {
				ground_dodo.push_front(dodo[0]);
				dodo.pop_front();
			}
		}
		if (su_turn) {
			if (su.size() != 0) {
				ground_su.push_front(su[0]);
				su.pop_front();
			}
		}
		if (dodo.size() == 0 || su.size() == 0)break;

		bool dodo_bell = false;
		bool su_bell = false;
        
		//3번 - 종치기 
		//그라운드에서 합이 5면 수연, 숫자 5 있으면 도도가 
		if (ground_dodo.size() != 0 && ground_su.size() != 0) {
			if ((ground_dodo[0] + ground_su[0]) == 5) {
				su_bell = true;
			}
			if (ground_dodo[0] == 5 || ground_su[0] == 5) {
				dodo_bell = true;
			}
		}
		else if (ground_dodo.size() != 0 && ground_su.size() == 0) {
			if(ground_dodo[0]==5)dodo_bell = true;
		}
		else if (ground_dodo.size() == 0 && ground_su.size() != 0) {
			if (ground_su[0] == 5)dodo_bell = true;
		}

		if (dodo_bell) {
			while (ground_su.size() > 0) {
				
				dodo.push_back(ground_su.back());
				ground_su.pop_back();
			}
			while (ground_dodo.size() > 0) {
				
				dodo.push_back(ground_dodo.back());
				ground_dodo.pop_back();
			}
		}
		if (su_bell) {
			while (ground_dodo.size() > 0) {
				
				su.push_back(ground_dodo.back());
				ground_dodo.pop_back();
			}
			while (ground_su.size() > 0) {
				
				su.push_back(ground_su.back());
				ground_su.pop_back();
			}
		}
		
		if (dodo_turn) {
		
			dodo_turn = false;
			su_turn = true;
			continue;
		}
		if (su_turn) {
			su_turn = false;
			dodo_turn = true;
		}
	
	
	}




	if (dodo.size() == su.size()) {
		cout << "dosu";
	}
	if (dodo.size() > su.size()) {
		cout << "do";
	}
	if (dodo.size() < su.size()) {
		cout << "su";
	
	}

	

}
728x90
반응형