[문제풀이] 05-01. 올바른 괄호

𝒄𝒉𝒂𝒏𝒎𝒊𝒏·2023년 10월 31일
0

인프런, 자바(Java) 알고리즘 문제풀이

Stack, Queue(자료구조) - 0501. 올바른 괄호


🗒️ 문제


🎈 나의 풀이

	private static String solution(String[] strArr) {
        Stack<String> stack = new Stack<>();

        for(String s : strArr) {
            if(s.equals("(")) stack.push(s);
            else if(!stack.empty()) stack.pop();
            else return "NO";
        }

        if(!stack.empty()) return "NO";

        return "YES";
    }
    private static String solution2(String[] strArr) {
        int n = 0;

        if(!strArr[0].equals("(") || !strArr[strArr.length - 1].equals(")"))
            return "NO";

        for(String s : strArr) {
            if(s.equals("(")) n++;
            else n--;
        }

        return n == 0 ? "YES" : "NO";
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] strArr = sc.nextLine().split("");
        System.out.println(solution(strArr));
    }


🖍️ 강의 풀이

    public String solution(String str){
		String answer="YES";
		Stack<Character> stack=new Stack<>();
		for(char x : str.toCharArray()){
			if(x=='(') stack.push(x);
			else{
				if(stack.isEmpty()) return "NO";
				stack.pop();
			}
		}
		if(!stack.isEmpty()) return "NO";
		return answer;
	}

	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str=kb.next();
		System.out.println(T.solution(str));
	}


💬 짚어가기

해당 문제는 stack을 이용하여 쉽게 풀 수 있다.
stack 후입선출(LIFO, Last In First Out)의 특징을 갖고 있다.

나의 풀이의 solution2에서는 스택을 쓰지 않고 구현하였다.

profile
𝑶𝒏𝒆 𝒅𝒂𝒚 𝒐𝒓 𝒅𝒂𝒚 𝒐𝒏𝒆.

0개의 댓글