Deep Learning study

백준 3945문제 본문

백준 문제 코드

백준 3945문제

HwaniL.choi 2019. 12. 8. 14:48
반응형
#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