[프로그래머스/C++] 예상 대진표
1.문제 링크
2. 풀이 전 계획과 생각
- 구현
3. 풀이
#include <iostream>
#include<vector>
using namespace std;
int solution(int n, int a, int b)
{
int round=0;
vector<int> Game;
vector<int> nextGame;
for(int i=1;i<=n;i++) Game.push_back(i);
while(1){
bool check= false;
round++;
for(int i=0;i<Game.size();){
if(i%2==0){
if((Game[i]==a&&Game[i+1]==b)||(Game[i]==b&&Game[i+1]==a)) {
check= true;
break;
}
if(Game[i]==a || Game[i]==b){
nextGame.push_back(Game[i]);
}
else if(Game[i+1]==a || Game[i+1]==b){
nextGame.push_back(Game[i+1]);
}
else{
nextGame.push_back(Game[i+1]);
}
i+=2;
}
}
if(check) break;
Game.clear();
for(int i=0;i<nextGame.size();i++) Game.push_back(nextGame[i]);
nextGame.clear();
}
return round;
}
벡터를 2개씩 읽으면서 a나 b가 나오면 nextGame벡터에 넣고, 벡터를 2개씩 읽는 도중 동시에 a,b가 나오면 break문으로 while반복문을 빠져나온다.
4. 풀이하면서 고민했던 점