코딩테스트/C++
[ 백준 BOJ ] 15662번 - 톱니바퀴(2) (C++)
최-코드
2025. 6. 11. 11:22
https://www.acmicpc.net/problem/15662
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int T;
vector<string> gear;
int K;
vector<pair<int,int>> input;
void moveT(int i, int dir){
if(dir==-1){
string tmp = gear[i].substr(1);
tmp+=gear[i][0];
gear[i] = tmp;
} else{
string tmp = "";
tmp+=gear[i][7];
tmp+=gear[i].substr(0, 7);
gear[i] = tmp;
}
}
void next(int a, int b, int dir){
if(dir!=1){
if(a-1>=0){
if(gear[a][6]!=gear[a-1][2]){
next(a-1, -b, -1);
}
}
}
if(dir!=-1){
if(a+1<T){
if(gear[a][2]!=gear[a+1][6]){
next(a+1, -b, 1);
}
}
}
moveT(a,b);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin>>T;
for(int i = 0; i<T; i++){
string str;
cin>>str;
gear.push_back(str);
}
cin>>K;
for(int i = 0; i<K; i++){
int a,b;
cin>>a>>b;
next(a-1,b, 0);
}
int answer = 0;
for(int i = 0; i<T; i++){
if(gear[i][0]=='1') answer++;
}
cout<<answer<<endl;
return 0;
}