ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

4๊ฐœ์˜ ๊ธฐํ˜ธ โ€˜(โ€™, โ€˜)โ€™, โ€˜[โ€™, โ€˜]โ€™๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ด„ํ˜ธ์—ด ์ค‘์—์„œ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด๋ž€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋œ๋‹ค.

  1. ํ•œ ์Œ์˜ ๊ด„ํ˜ธ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ โ€˜()โ€™์™€ โ€˜[]โ€™๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด๋‹ค.
  2. ๋งŒ์ผ X๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด๋ฉด โ€˜(X)โ€™์ด๋‚˜ โ€˜[X]โ€™๋„ ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด ๋œ๋‹ค.
  3. X์™€ Y ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด๋ผ๋ฉด ์ด๋“ค์„ ๊ฒฐํ•ฉํ•œ XY๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด โ€˜(()[[]])โ€™๋‚˜ โ€˜(())[][]โ€™ ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด์ง€๋งŒ โ€˜([)]โ€™ ๋‚˜ โ€˜(()()[]โ€™ ์€ ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด ์•„๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด X์— ๋Œ€ํ•˜์—ฌ ๊ทธ ๊ด„ํ˜ธ์—ด์˜ ๊ฐ’(๊ด„ํ˜ธ๊ฐ’)์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜ํ•˜๊ณ  ๊ฐ’(X)๋กœ ํ‘œ์‹œํ•œ๋‹ค.

  1. โ€˜()โ€™ ์ธ ๊ด„ํ˜ธ์—ด์˜ ๊ฐ’์€ 2์ด๋‹ค.
  2. โ€˜[]โ€™ ์ธ ๊ด„ํ˜ธ์—ด์˜ ๊ฐ’์€ 3์ด๋‹ค.
  3. โ€˜(X)โ€™ ์˜ ๊ด„ํ˜ธ๊ฐ’์€ 2ร—๊ฐ’(X) ์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.
  4. โ€˜[X]โ€™ ์˜ ๊ด„ํ˜ธ๊ฐ’์€ 3ร—๊ฐ’(X) ์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.
  5. ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด X์™€ Y๊ฐ€ ๊ฒฐํ•ฉ๋œ XY์˜ ๊ด„ํ˜ธ๊ฐ’์€ ๊ฐ’(XY)= ๊ฐ’(X)+๊ฐ’(Y) ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด โ€˜(()[[]])([])โ€™ ์˜ ๊ด„ํ˜ธ๊ฐ’์„ ๊ตฌํ•ด๋ณด์ž. โ€˜()[[]]โ€™ ์˜ ๊ด„ํ˜ธ๊ฐ’์ด 2 + 3ร—3=11 ์ด๋ฏ€๋กœ โ€˜(()[[]])โ€™์˜ ๊ด„ํ˜ธ๊ฐ’์€ 2ร—11=22 ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  โ€˜([])โ€™์˜ ๊ฐ’์€ 2ร—3=6 ์ด๋ฏ€๋กœ ์ „์ฒด ๊ด„ํ˜ธ์—ด์˜ ๊ฐ’์€ 22 + 6 = 28 ์ด๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์ด ํ’€์–ด์•ผ ํ•  ๋ฌธ์ œ๋Š” ์ฃผ์–ด์ง„ ๊ด„ํ˜ธ์—ด์„ ์ฝ๊ณ  ๊ทธ ๊ด„ํ˜ธ๊ฐ’์„ ์•ž์—์„œ ์ •์˜ํ•œ๋Œ€๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

<๋ฌธ์ œ ๋งํฌ>

 

2504๋ฒˆ: ๊ด„ํ˜ธ์˜ ๊ฐ’

4๊ฐœ์˜ ๊ธฐํ˜ธ โ€˜(โ€™, โ€˜)โ€™, โ€˜[โ€™, โ€˜]โ€™๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ด„ํ˜ธ์—ด ์ค‘์—์„œ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด๋ž€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋œ๋‹ค. ํ•œ ์Œ์˜ ๊ด„ํ˜ธ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ โ€˜()โ€™์™€ โ€˜[]โ€™๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด์ด๋‹ค. ๋งŒ์ผ X

www.acmicpc.net


์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๊ด„ํ˜ธ์—ด์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด(์ŠคํŠธ๋ง)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹จ ๊ทธ ๊ธธ์ด๋Š” 1 ์ด์ƒ, 30 ์ดํ•˜์ด๋‹ค.


์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๊ทธ ๊ด„ํ˜ธ์—ด์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์ผ ์ž…๋ ฅ์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ๋ชปํ•œ ๊ด„ํ˜ธ์—ด์ด๋ฉด ๋ฐ˜๋“œ์‹œ 0์„ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.


๋ฌธ์ œ ํ’€์ด

์ด ๋ฌธ์ œ๋Š” ์ด์ „์— ๋‹ค๋ค˜๋˜ ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•œ ํ˜•์‹์ž…๋‹ˆ๋‹ค. 

์ด๋Š” ๊ด„ํ˜ธ์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋กœ, ๊ด„ํ˜ธ๋“ค์ด ํŠน์ • ์กฐ๊ฑด์— ๋งž๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

๋”ฐ๋ผ์„œ ๊ด„ํ˜ธ๋ฅผ ์Šคํƒ์— ์ €์žฅํ•˜๊ณ , ๊ด„ํ˜ธ์˜ ์Œ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

์ด ๋ฌธ์ œ๋Š” ๋˜ํ•œ, ๊ด„ํ˜ธ ๋‚ด๋ถ€์— ์žˆ๋Š” ๊ด„ํ˜ธ ์Œ์ด ์˜๋ฏธํ•˜๋Š” ๊ณ„์‚ฐ ๊ณผ์ •์„ ๋จผ์ € ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด, [()()]์˜ ๊ฒฝ์šฐ์—๋Š” [] ์•ˆ์— ์žˆ๋Š” ๊ณ„์‚ฐ์ด ๋จผ์ € ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[2 + 2]

3 * 4

12

 

์ด ๊ณผ์ •์€ ์•ž์„œ ๋“ฑ์žฅํ•˜๋Š” ๊ณฑํ•ด์ ธ์•ผ ํ•  ๊ฐ’๋“ค์„ ๋ˆ„์ ํ•˜์—ฌ ๊ณฑํ•œ ํ›„, ํ•ด๋‹น ๊ด„ํ˜ธ๊ฐ€ ๋ˆ„์  ๊ณฑ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ๋๋‚˜๋ฉด ๋‚˜๋ˆ—์…ˆ์„ ํ†ตํ•ด ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ, ์—ด๋ฆฐ ๊ด„ํ˜ธ ๋‹ค์Œ์— ๋‹ซํžŒ ๊ด„ํ˜ธ๊ฐ€ ์˜ค๋ฉด ํ•ด๋‹น ๋ˆ„์  ๊ณฑ์„ ์ •๋‹ต ๋ณ€์ˆ˜์— ๋”ํ•ด์ค๋‹ˆ๋‹ค.

 

 

์˜ˆ๋ฅผ ๋“ค์–ด, (([]))๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค.

 

ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•˜๋ฉด ์ฒ˜์Œ์œผ๋กœ ์˜ค๋Š” ๋ฌธ์ž๋Š” '('์ด๊ณ , ๋ˆ„์  ๊ณฑ์€ 2๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

๋‹ค์Œ ๋ฌธ์ž๋Š” ๋˜ '('์ด๊ณ  ๋ˆ„์ ‘ ๊ณฑ์ด 2*2๋กœ 4๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

๋‹ค์Œ์€ '['์ด ์˜ค๊ณ  ๋ˆ„์  ๊ณฑ์€ 2*2*3=12๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

์ด์–ด์„œ ๋‹ซํžŒ ๊ด„ํ˜ธ ']'๊ฐ€ ์˜ค๋ฉด ๋ˆ„์  ๊ณฑ์„ ์ •๋‹ต ๋ณ€์ˆ˜์— ๋”ํ•˜๊ณ  ํ•ด๋‹น ๊ด„ํ˜ธ์˜ ์˜ํ–ฅ์„ ๋ˆ„์  ๊ณฑ์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

2 * 2 * 3 = 12

12 / 3 = 4

 

๋‹ค์Œ์œผ๋กœ๋Š” ๋˜ ๋‹ซํžŒ ๊ด„ํ˜ธ๊ฐ€ ์˜ค๋ฉฐ, ์ด์ „ ๊ด„ํ˜ธ๊ฐ€ ์—ด๋ฆฐ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹Œ ๋‹ซํžŒ ๊ด„ํ˜ธ์ด๋ฏ€๋กœ

์ •๋‹ต ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋”ํ•ด์ฃผ์ง€ ์•Š๊ณ  ๋ˆ„์  ๊ณฑ์—์„œ ์˜ํ–ฅ๋งŒ ์ง€์›Œ์ค๋‹ˆ๋‹ค.

2 * 2 * 3 = 12

12 / 3 = 4

4 / 2 = 2

 

์œ„์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

2 * 2 * 3 = 12

12 / 3 = 4

4 / 2 = 2

2 / 2 = 1

 

๊ฒฐ๋ก ์ ์œผ๋กœ, ์—ด๋ฆฐ ๊ด„ํ˜ธ ๋‹ค์Œ์— ๋‹ซํžŒ ๊ด„ํ˜ธ๊ฐ€ ์˜ค๋ฉด ์ •๋‹ต ๋ณ€์ˆ˜์— ๋ˆ„์  ๊ณฑ์„ ๋”ํ•˜๊ณ , ๊ด„ํ˜ธ์— ๋”ฐ๋ผ ๋ˆ„์  ๊ณฑ ๋ณ€์ˆ˜๋ฅผ ๊ณฑํ•˜๊ณ  ๋‚˜๋ˆ„์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

์ดํ•ด๊ฐ€ ์–ด๋ ต๋‹ค๋ฉด ์•„๋ž˜ ์ •๋‹ต ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด์„ธ์š”!

ํ’€์ด ์ˆœ์„œ

1. ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ๋ฐ›์€ ๋ฌธ์ž์—ด๋กœ ์ˆœํšŒ๋ฅผ ๋ˆ๋‹ค

2. ์ˆœํšŒ๋ฅผ ๋„๋Š” ๋ฌธ์ž๋กœ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค.

2-1. ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ์—ด๋ฆฐ ๊ด„ํ˜ธ์ผ ๊ฒฝ์šฐ, ๋ˆ„์  ๊ณฒ์— ํ•ด๋‹น ๊ด„ํ˜ธ์˜ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฐ’์„ ๊ณฑํ•ด์ค€๋‹ค.

2-2. ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ๋‹ซํžŒ ๊ด„ํ˜ธ์ผ ๊ฒฝ์šฐ, ๊ด„ํ˜ธ๊ฐ€ ๋†“์ผ ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์ด ๋งž๋Š” ์ง€ ๋จผ์ € ํ™•์ธํ•ด์ฃผ๊ณ  ๋งž๋‹ค๋ฉด ์ด์ „ ๊ด„ํ˜ธ์— ๋”ฐ๋ผ ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

3. ์ •๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.


ํ’€์ด ์ฝ”๋“œ

< Swift>

// Swift
let str = readLine()!

var s = [Character]()

var ans = 0
var n = 1  // ๊ณฑํ•ด์ง€๋Š” ๊ฐ’

var prev: Character = " "  // ๋ฐ˜๋ณต๋ฌธ์˜ ์ง์ „ ๋ฌธ์ž ์ €์žฅ

for c in str {
    if c == "(" {
        n *= 2
        s.append(c)
        
    } else if c == "[" {
        n *= 3
        s.append(c)
        
    } else if c == ")" {
        
        if s.isEmpty || s.last != "(" {
            s.append(" ")  // ์ •๋‹ต ์ถœ๋ ฅ ์‹œ, ์Šคํƒ์˜ ๋นˆ๋ฐฐ์—ด ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๋กœ ์ •๋‹ต์„ ํ•œ ๋ฒˆ๋งŒ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•จ
            break
            
        } else if prev == "(" {
            ans += n
            n /= 2
            s.removeLast()
            
        } else { // ๊ฒฝ์šฐ: ๋‹ซ -> ๋‹ซ
            s.removeLast()
            n /= 2
        }
        
    } else {  // c == "]'
        if s.isEmpty || s.last != "[" {
            s.append(" ")
            break
        } else if prev == "[" {
            ans += n
            n /= 3
            s.removeLast()
        } else { // ๊ฒฝ์šฐ: ๋‹ซ -> ๋‹ซ
            s.removeLast()
            n /= 3
        }
    }
    
    prev = c  // ์ง์ „ ๋ฌธ์ž ๊ธฐ๋ก
}

if s.isEmpty {
    print(ans)
} else {
    print(0)
}

< C++>

// C++
#include <bits/stdc++.h>
using namespace std;

stack<char> s;

int main(void){
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    string str;
    cin >> str;
    
    int ans = 0;
    int n = 1;
    
    for(int i = 0; i < str.size(); i++){
        if(str[i] == '('){
            n *= 2;
            s.push(str[i]);
        }
        else if(str[i] == '['){
            n *= 3;
            s.push(str[i]);
        } 
        else if(str[i] == ')'){
            if(s.empty() || s.top() != '('){
                cout << 0;
                return 0;
            }
            if(str[i-1] == '(') ans += n;
            n /= 2;
            s.pop();
        }
        else{ // ']'
            if(s.empty() || s.top() != '['){
                cout << 0;
                return 0;
            }
            if(str[i-1] == '[') ans += n;
            n /= 3;
            s.pop();
        }
    }
    if(s.empty()) cout << ans;
      else cout << 0;
}

๋งˆ๋ฌด๋ฆฌ

๊ด„ํ˜ธ์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋Š” ์Šคํƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•ด์•ผ ํ•จ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. 

๊ทธ๋Ÿฌ๋‚˜ ๊ด„ํ˜ธ ๋‚ด๋ถ€์— ์žˆ๋Š” ๊ณ„์‚ฐ ๊ณผ์ •์„ ํ•ด๋‹น ๊ด„ํ˜ธ๋ณด๋‹ค ๋จผ์ € ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 

์ด ๋ถ€๋ถ„์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์ด ๊ฝค ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. 

 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ๋ˆ„์  ๊ณฑ ๊ฐœ๋…์„ ๋„์ž…ํ•˜์—ฌ ๊ณ„์†ํ•ด์„œ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  

์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋‹ต์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.