본문 바로가기

Python

BAEKJOON(백준) Stack - 4949번 PYTHON / JAVA CODE

 

Python 틀린 코드

import sys


while True:
    sentence = sys.stdin.readline().rstrip()
    if sentence == ".":
        break

    answer = True
    stack = []

    for s in sentence:
        if s == "(" or s == "[":
            stack.append(s)

        elif s == ")":
            if len(stack) == 0:
                answer = False
                break
            elif stack[-1] == "(":
                stack.pop()
            else:
                answer = False
                break

        elif s == "]":
            if len(stack) == 0:
                answer = False
                break
            elif stack[-1] == "[":
                stack.pop()
            else:
                answer = False
                break

    if answer and not stack:
        print("yes")
    else:
        print("no")

 

Python 정답 코드

import sys

sentence = []
word = []
h = 0
res = []

while True:
    count = [0] * 4
    command = sys.stdin.readline().rstrip()
    
    if command == ".":
        break

    word.append(command.split())

    for k in range(len(word[h])):
        alpha = word[h][k]
        #print("alpha : ", alpha)
        for n in range(len(alpha)):
            #print(alpha[n])
            if alpha[n] == '(':
                count[0] += 1

            elif alpha[n] == ')':
                count[1] += 1

            elif alpha[n] == '[':
                count[2] += 1

            elif alpha[n] == ']':
                count[3] += 1

    print(count[0], " ", count[1], " ", count[2], " ", count[3])
    h += 1
    if count[0] != count[1] or count[2] != count[3]:
        res.append("no")

    else:
        res.append("yes")


for i in range(len(res)):
    print(res[i])

 

JAVA

package BaekJoon;

import java.io.*;
import java.util.Stack;
import java.util.Scanner;

// 10828번 스택
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Scanner in = new Scanner(System.in);
        
        Stack s = new Stack<>();
        boolean ans = true;

		while(true) {		
			s.clear();
			String str = in.nextLine();
			
			if(str.equals(".")) 
				break;
			
			for (int i = 0; i < str.length(); i++) {
				char alpha = str.charAt(i);
				if (alpha == '(' || alpha == '[') {
					s.push(alpha);
				} 
				else if (alpha == ')' || alpha == ']') {
					if (s.isEmpty() || (s.peek() == '(' && alpha == ']') || (s.peek() == '[' && alpha == ')')) {
						s.push(alpha);
						break;
					}
					s.pop();
				}
			}

			if (!s.isEmpty())
				System.out.println("no");
			else
				System.out.println("yes");
        }
    }
}