반응형
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 |