본문 바로가기

Study/algorithms

[백준] 4949 균형잡힌 세상

반응형

c++

#include <cstdio>
#include <cstdlib>
#include <cstring>

void solveline(char *s) {
    char stack[102];
    int idx = 0;
    while (*s != '\0') {
        char c = *s;
        if (c == '(' || c== '[') {
            stack[idx++] = c;
        } else if (c==')'||c==']'){
            if (idx > 0 && 
                ((stack[idx-1] == '(' && c== ')') ||
                (stack[idx-1] == '[' && c== ']'))) {
                idx--;
            }  
            else {
                printf("no\n");
                return;
            }
        }
        s++;
    }
    if (idx != 0) {
        printf("no\n");
    } else {
        printf("yes\n");
    }
}

int main() {
    char *s = NULL;
    size_t len = 0;
    for (;;) {
        getline(&s, &len, stdin);
        if (strcmp(s, ".") == 0 || strcmp(s, ".\n") == 0) {
            break;
        }
        
        solveline(s);
    }
    free(s);
}

 

python3

def solve_line(line):
    stack = []

    for s in line:
        if s == '(' or s== '[':
            stack.append(s)
        elif s == ')' or s == ']':
            empty = len(stack) != 0
            if empty and s == ')' and stack[-1] == '(':
                stack.pop()
            elif empty and s == ']' and stack[-1] == '[':
                stack.pop()
            else:
                print("no")
                return
    if len(stack) != 0:
        print("no")
    else:
        print("yes")
        


if __name__ == "__main__":
    while True:
        line = input()
        if line == ".":
            break
        else:
            solve_line(line)

'Study > algorithms' 카테고리의 다른 글

[백준] 11866 요세푸스 문제0 c++  (0) 2020.03.05
[백준] 2164 카드2  (0) 2020.03.01
[백준] 2004 조합 0의 개수  (0) 2020.02.23
[백준] 1676. 팩토리얼 0의 개수  (0) 2020.02.18
[백준] 9375. 패션왕 신해빈  (0) 2020.02.16