Deep Learning study
백준 3945문제 본문
반응형
#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
int t; cin >> t;
for(int T = 1 ; T <= t ; T++){
int m, c, i; cin >> m >> c >> i;
char C[100010] = {0,}, I[5000] = {0,};
cin >> C >> I;
int point = 0, input_p = 0,cnt = 0;
char mem[100010] = {0,};
int brack[100010] = {0,},min_loop_idx = 0, max_loop_idx = 0;
stack<int> bracket;
for(int i=0 ;i< c ; i++){
if(C[i] == '[') bracket.push(i);
else if(C[i]==']'){
brack[i] = bracket.top();
brack[bracket.top()] = i;
bracket.pop();
}
}
for(int j = 0; j < c ; j++){
cnt++;
char cur = C[j];
if(cur == '-'){mem[point] = (mem[point]-1)%256;}
else if(cur == '+'){mem[point] = (mem[point]+1)%256;}
else if(cur == '<'){if(--point == -1) point = m-1;}
else if(cur == '>'){if(++point == m) point = 0;}
else if(cur == '['){
if(!mem[point]) j = brack[j];
}
else if(cur == ']'){
max_loop_idx = max(max_loop_idx, j);
if(mem[point]) j = brack[j];
}
else if(cur == ','){
if(input_p == i) mem[point] = 255;
else mem[point] = (int)I[input_p++];
}
if(cnt > 5e7) break;
}
if(cnt > 5e7) cout << "Loops " << brack[max_loop_idx] << ' ' << max_loop_idx << '\n';
else cout << "Terminates\n";
}
return 0;
}
gcpc문제이기도하고 정답률이 14%이여서 어려울줄 알았는데 어렵진 않다. ..
이번에도 freopen()달아놓고 제출해서 계속 틀렸습니다.. 나왔다ㅠㅠ
정신이 어디가있는거지
여튼 Brainfuck 인터프리터 문제 입니다.
반응형
'백준 문제 코드' 카테고리의 다른 글
백준 14501문제 (0) | 2019.12.10 |
---|---|
백준 17135문제 (0) | 2019.12.08 |
백준 17406문제 (0) | 2019.12.07 |
백준 17471문제 (0) | 2019.12.07 |
백준 16637문제 (0) | 2019.12.05 |
Comments