ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] μŠ€νƒμ˜ ν™œμš©(μˆ˜μ‹μ˜ κ΄„ν˜Έ 검사)
    Algorithm & Data Structure 2022. 1. 20. 22:50
    λ°˜μ‘ν˜•

    λ“€μ–΄κ°€λ©°

     μ΄λ²ˆμ—λŠ” μŠ€νƒμ„ ν™œμš©ν•˜μ—¬ μˆ˜μ‹μ˜ κ΄„ν˜Έ μŒμ„ κ²€μ‚¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ— λŒ€ν•΄ μ•Œμ•„λ³΄μž!

     

    μˆ˜μ‹μ˜ κ΄„ν˜Έ 쌍 μ˜ˆμ‹œ

    • ( { { ) } } -> μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ 식
    • ( ( ) ) -> μ˜¬λ°”λ₯Έ 식

     

    μˆ˜μ‹μ˜ κ΄„ν˜Έ 쌍 ν•΄κ²° μ•Œκ³ λ¦¬μ¦˜

    1.  μ—¬λŠ” κ΄„ν˜Έκ°€ λ‚˜μ˜€λ©΄ μŠ€νƒμ— μΆ”κ°€ν•œλ‹€.
    2.  λ‹«λŠ” κ΄„ν˜Έκ°€ λ‚˜μ™”μ„ λ•Œ μ•„λž˜μ˜ 3가지 λ°©λ²•μœΌλ‘œ μ²˜λ¦¬ν•œλ‹€.
      1.  μŠ€νƒμ΄ λΉ„μ–΄μžˆμœΌλ©΄ μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ κ΄„ν˜Έ μŒμ΄λ‹€.
      2.  μŠ€νƒμ˜ topκ³Ό 짝이 λ§žμ§€ μ•ŠλŠ” κ΄„ν˜ΈλΌλ©΄ μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ κ΄„ν˜Έ μŒμ΄λ‹€.
      3.  μŠ€νƒμ˜ topκ³Ό 짝이 λ§žλŠ” κ΄„ν˜ΈλΌλ©΄ popν•œλ‹€.
    3.  μœ„μ˜ 과정을 끝낸 ν›„ μŠ€νƒμ— κ΄„ν˜Έκ°€ λ‚¨μ•„μžˆμœΌλ©΄ μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ κ΄„ν˜Έ 쌍이고, λ°˜λŒ€λ‘œ μŠ€νƒμ— κ΄„ν˜Έκ°€ λ‚¨μ•„μžˆμ§€ μ•Šλ‹€λ©΄ μ˜¬λ°”λ₯Έ κ΄„ν˜Έ μŒμ΄λ‹€.

     

    문제 ν•΄κ²°

     μ•„λž˜λŠ” λ°±μ€€(BOJ) 4949번 κ· ν˜•μž‘νžŒ 세상을 μœ„μ˜ μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•΄ ν•΄κ²°ν•œ μ½”λ“œμ΄λ‹€.

    https://www.acmicpc.net/problem/4949

     

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(void) {
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	
    	while (true) {
    		string str;
    		getline(cin, str);
    		
    		if (str == ".") {
    			break;
    		}
    		
    		stack<char> S;
    		bool isValid = true;
    		
    		for (auto c : str) {
    			if (c == '(' || c == '[') {
    				S.push(c);
    			} else if (c == ')') {
    				if (S.empty() || S.top() != '(') { // μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ κ΄„ν˜Έ 쌍
    					isValid = false;
    					break;
    				}
    				S.pop();
    			} else if (c == ']') {
    				if (S.empty() || S.top() != '[') { // μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ κ΄„ν˜Έ 쌍
    					isValid = false;
    					break;
    				}
    				S.pop();
    			}
    		}
    		
    		if (!S.empty()) { // λͺ¨λ“  과정을 끝낸 ν›„ μŠ€νƒμ— κ΄„ν˜Έκ°€ λ‚¨μ•„μžˆμœΌλ©΄ μ˜¬λ°”λ₯΄μ§€ μ•ŠμŒ!
    			isValid = false;
    		}
    		
    		if (isValid) {
    			cout << "yes" << '\n';
    		} else {
    			cout << "no" << '\n';
    		}
    	}
    	
    	return 0;
    }
    λ°˜μ‘ν˜•
Designed by Tistory.