ํฌ์ŠคํŠธ

๐ŸŒ“ Baekjoon 10799 - '์‡ ๋ง‰๋Œ€๊ธฐ'

๐Ÿ’ซ ๋ฌธ์ œ


๐Ÿซง Example Input/Output

1
2
3
4
5
6
7
8
// IN
// () : ๋ ˆ์ด์ € (์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์ž๋ฅผ ์ˆ˜ ์žˆ๋Š”)
// ( : ์‡ ๋ง‰๋Œ€๊ธฐ ์‹œ์ž‘ (์™ผ์ชฝ ๋)
// ) : ์‡ ๋ง‰๋Œ€๊ธฐ ๋ (์˜ค๋ฅธ์ชฝ ๋)
()(((()())(())()))(())

// OUT
17 // ์‡ ๋ง‰๋Œ€๊ธฐ ์กฐ๊ฐ ์ˆ˜


๐Ÿ’ซ C++ ํ’€์ด


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	string s;
	cin >> s;

	int pipeCount = 0;

	int score = 0;
	bool lastOpen = false;
	for (auto c : s)
	{
		if (c == '(')
		{
			score++;
			lastOpen = true;
		}
		else
		{
			score--;
			pipeCount += lastOpen ? score : 1;
			lastOpen = false;
		}
	}

	cout << pipeCount;
}


๐Ÿ’ซ Memo


  1. ๋ฌธ์ž์—ด์—์„œ ๋ ˆ์ด์ € ํ‘œ์‹œ
    ๊ด€์ฐฐ0

  2. ๋ฌธ์ž์—ด์—์„œ ์‡ ๋ง‰๋Œ€๊ธฐ ํ‘œ์‹œ
    ๊ด€์ฐฐ1

  3. ๋ ˆ์ด์ € ์ง€์ด์ž‰
    ๊ด€์ฐฐ2

  4. ๋ ˆ์ด์ €๊ฐ€ ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์ž๋ฅด๋Š” ์œ„์น˜ ํ‘œ์‹œ
    • ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ์ž˜๋ฆฌ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜์žˆ๋‹ค ๊ด€์ฐฐ3
  5. ๋˜ ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ํ‘œ์‹œ, ์—ฌ๋Š” ๊ด„ํ˜ธ๋ผ๋ฉด ์Šคํƒ +1, ๋‹ซ๋Š” ๊ด„ํ˜ธ๋ผ๋ฉด ์Šคํƒ -1
    ๊ด€์ฐฐ4

  6. 1~5๋ฒˆ์„ ํ†ตํ•ด ๊ทœ์น™ ์ฐพ๊ธฐ
    • ๋ ˆ์ด์ €์— ํฌํ•จ๋œ ๋‹ซ๋Š” ๊ด„ํ˜ธ๋ผ๋ฉด, ํ˜„์žฌ ์Šคํƒ๋งŒํผ ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ์ž˜๋ฆฐ๋‹ค
    • ์‡ ๋ง‰๋Œ€๊ธฐ์— ํฌํ•จ๋œ ๋‹ซ๋Š” ๊ด„ํ˜ธ๋ผ๋ฉด, ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ 1๋ฒˆ ์ž˜๋ฆฐ๋‹ค ๊ด€์ฐฐ5
  7. ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๊ธฐ
    • ์ „์ œ : ๋ชจ๋“  ๋ฌธ์ž์—ด์€ ๊ท ํ˜•์žกํžŒ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋‹ค
      1. ๊ฐ ๋ฌธ์ž์— ๋Œ€ํ•ด (for)
      2. ๋ฌธ์ž๊ฐ€ (๋ฉด ์ ์ˆ˜ +1
      3. ๋ฌธ์ž๊ฐ€ )๋ฉด
      • ์ผ๋‹จ ์ ์ˆ˜ -1
      • ๋งŒ์•ฝ ์ด์ „ ๋ฌธ์ž๊ฐ€ (์˜€๋‹ค๋ฉด ์‡ ๋ง‰๋Œ€๊ธฐ += ํ˜„์žฌ ์ ์ˆ˜
      • ์•„๋‹ˆ๋ผ๋ฉด ์‡ ๋ง‰๋Œ€๊ธฐ += 1
  • ์›๋ž˜ ์Šคํƒ์„ ์จ์„œ ํ’€์—ˆ๋Š”๋ฐ, ์–ด์ฐจํ”ผ ๊ท ํ˜•์žกํžŒ ๋ฌธ์ž์—ด์ด๋ผ ๊ตณ์ด ์Šคํƒ์„ ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.


์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.