백준 4889 java : stack

magicdrill·2025년 1월 21일

백준 문제풀이

목록 보기
533/673

백준 4889 java : stack

이번 코딩 테스트는 어쩌면 자바로 보게 될거 같아서 자바를 다시 연습한다. 문제 좀 똑바로 보자

import java.util.Scanner;
import java.util.Stack;

public class bj4889 {
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        String input;
        int count = 1;

        while(true){
            input = sc.nextLine();
            if(input.contains("-")){//입력의 마지막 줄은 '-'가 한 개 이상 주어진다.
                break;
            }
            else{
                System.out.println(count + ". " + findAnswer(input));
                count++;
            }
        }
    }

    public static int findAnswer(String input){
        int answer = 0;
        int i;
        char ch1, ch2;

        Stack<Character> stack = new Stack<>();
        for(i = 0; i < input.length(); i++){
            if(input.charAt(i) == '{'){
                stack.push(input.charAt(i));
            }
            else if(!stack.isEmpty() && stack.peek() == '{'){//input.charAt[i] == '}'가 내포되어 있음
                stack.pop();
            }
            else{
                stack.push(input.charAt(i));
            }
        }

        while(!stack.isEmpty()){
            ch1 = stack.pop();
            ch2 = stack.pop();

            if(ch1 == ch2){
                answer++;
            }
            else{//ch1 != ch2
                answer += 2;
            }
        }

        return answer;
    }
}

0개의 댓글