ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
์ธ๊ณ๋ ๊ท ํ์ด ์ ์กํ์์ด์ผ ํ๋ค. ์๊ณผ ์, ๋น๊ณผ ์ด๋ ๊ทธ๋ฆฌ๊ณ ์ผ์ชฝ ๊ดํธ์ ์ค๋ฅธ์ชฝ ๊ดํธ์ฒ๋ผ ๋ง์ด๋ค.
์ ๋ฏผ์ด์ ์๋ฌด๋ ์ด๋ค ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋, ๊ดํธ๋ค์ ๊ท ํ์ด ์ ๋ง์ถฐ์ ธ ์๋์ง ํ๋จํ๋ ํ๋ก๊ทธ๋จ์ ์ง๋ ๊ฒ์ด๋ค.
๋ฌธ์์ด์ ํฌํจ๋๋ ๊ดํธ๋ ์๊ดํธ("()") ์ ๋๊ดํธ("[]")๋ก 2์ข ๋ฅ์ด๊ณ , ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๋ ์กฐ๊ฑด์ ์๋์ ๊ฐ๋ค.
- ๋ชจ๋ ์ผ์ชฝ ์๊ดํธ("(")๋ ์ค๋ฅธ์ชฝ ์๊ดํธ(")")์๋ง ์ง์ ์ด๋ค์ผ ํ๋ค.
- ๋ชจ๋ ์ผ์ชฝ ๋๊ดํธ("[")๋ ์ค๋ฅธ์ชฝ ๋๊ดํธ("]")์๋ง ์ง์ ์ด๋ค์ผ ํ๋ค.
- ๋ชจ๋ ์ค๋ฅธ์ชฝ ๊ดํธ๋ค์ ์์ ๊ณผ ์ง์ ์ด๋ฃฐ ์ ์๋ ์ผ์ชฝ ๊ดํธ๊ฐ ์กด์ฌํ๋ค.
- ๋ชจ๋ ๊ดํธ๋ค์ ์ง์ 1:1 ๋งค์นญ๋ง ๊ฐ๋ฅํ๋ค. ์ฆ, ๊ดํธ ํ๋๊ฐ ๋ ์ด์์ ๊ดํธ์ ์ง์ง์ด์ง์ง ์๋๋ค.
- ์ง์ ์ด๋ฃจ๋ ๋ ๊ดํธ๊ฐ ์์ ๋, ๊ทธ ์ฌ์ด์ ์๋ ๋ฌธ์์ด๋ ๊ท ํ์ด ์กํ์ผ ํ๋ค.
์ ๋ฏผ์ด๋ฅผ ๋์ ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋ ๊ท ํ์กํ ๋ฌธ์์ด์ธ์ง ์๋์ง๋ฅผ ํ๋จํด๋ณด์.
์ ๋ ฅ
๊ฐ ๋ฌธ์์ด์ ๋ง์ง๋ง ๊ธ์๋ฅผ ์ ์ธํ๊ณ ์๋ฌธ ์ํ๋ฒณ, ๊ณต๋ฐฑ, ์๊ดํธ("( )"), ๋๊ดํธ("[ ]")๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์จ์ (".")์ผ๋ก ๋๋๊ณ , ๊ธธ์ด๋ 100๊ธ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ถ๋ ฅ
๊ฐ ์ค๋ง๋ค ํด๋น ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๊ณ ์์ผ๋ฉด "yes"๋ฅผ, ์๋๋ฉด "no"๋ฅผ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
๊ดํธ์ ์ง์ด ๋ง๊ฒ ์ด๋ฃจ์ด์ ธ ์๋์ง ํ์ธํ๋ ๋ฌธ์ ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ์ํฉ์ด ์ณ์ ์์๋ผ๊ณ ํ ์ ์์ต๋๋ค.
( ) ( ) [ ]
[ ( ) ( ) ]
[ ( ( ) ) ]
๊ทธ๋ ๋ค๋ฉด ์๋ชป๋ ์ํฉ์ ๋ฌด์์ด ์์๊น์?
๋ซํ ๊ดํธ๊ฐ ์ด๋ฆฐ ๊ดํธ๋ณด๋ค ๋จผ์ ๋์ค๋ ๊ฒฝ์ฐ์
์ด๋ฆฐ ๊ดํธ ๋ค์์ผ๋ก ์ค๋ ๋ซํ ๊ดํธ๊ฐ ์ง์ด ๋ง์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
๋ฌธ์์ด์ ์ํํ๋ฉฐ ๋ซํ ๊ดํธ๊ฐ ๋์จ๋ค๋ฉด ์ ์ฅ์ ํด๋๋ค๊ฐ ๋ซํ ๊ดํธ๊ฐ ๋์ค๋ ์๊ฐ
์กฐ๊ฑด๋ฌธ์ ํ์ฉํ์ฌ ์ํฉ์ ํ๋จํ๋ฉด ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ดํธ๋ฅผ ์ ์ฅํ ์๋ฃ๊ตฌ์กฐ๋ก๋ ๋ง์ ๊ฒ๋ค์ด ์์ง๋ง ๋ซํ ๊ดํธ๋ฅผ ํ๋จํ ๋ ์ค์ํ ๊ฒ์
์ต๊ทผ์ ์ ์ฅ๋ ๋ซํ ๊ดํธ์ด๋ฏ๋ก FILO๋ฐฉ์์ ์คํ์ ์ด์ฉํ์ฌ ๊ดํธ๋ฅผ ์ ์ฅํ๊ฒ ์ต๋๋ค.
ํ์ด ์์
1. ์ด๋ฆฐ ๊ดํธ๊ฐ ๋์จ๋ค๋ฉด ์คํ์ ์ ์ฅํฉ๋๋ค.
2. ๋ซํ ๊ดํธ๊ฐ ๋์จ๋ค๋ฉด ๋ฌธ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฒ๋ฆฌ๋ฅผ ํด์ค๋๋ค.
- ๋ง์ฝ, ๋ซํ ๊ดํธ๊ฐ ์ง์ด ์์ด ๋จผ์ ๋์จ๋ค๋ฉด "no"
- ์ด์ ์ด๋ฆฐ ๊ดํธ๊ฐ ๋ซํ ๊ดํธ์ ์ง์ด ๋ง์ง ์๋๋ค๋ฉด "no"
- ์ด์ ์ด๋ฆฐ ๊ดํธ์ ๋ซํ ๊ดํธ์ ์ง์ด ๋ง๋ค๋ฉด, ๋ซํ ๊ดํธ๋ฅผ ์คํ์์ ์ ๊ฑฐํฉ๋๋ค.
3. ์คํ์ ์ํ๋ฅผ ํ์ธํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ค๋๋ค.
โ๏ธ์ถ๊ฐ ๋ฐ๋ก (์ง๋ฌธ ๊ฒ์ํ ํ์ฉ)
์๋๋ ๋ค "no"๋ฅผ ์ถ๋ ฅํด์ผ ํฉ๋๋ค.
- ([(]])
- ([)]).
. - (()))
. - [(()]).
. - (
- (
.
ํ์ด ์ฝ๋
< Swift>
// Swift
// ์ฒซ ๋ฒ์งธ ์ฝ๋
while let str = readLine(), str != "." {
var s = [Character]() // stack
for char in str {
if char == "[" || char == "(" {
s.append(char)
} else if let last = s.last {
if (last == "[" && char == ")") || (last == "(" && char == "]") { // ๋ซ๋ ๊ดํธ์ ์คํ์ top ๊ดํธ๊ฐ ์ง์ด ์๋๋ผ๋ฉด
break
} else if last == "[" && char == "]" { // ์ง์ด ๋ง๋ค๋ฉด
s.removeLast()
} else if last == "(" && char == ")" {
s.removeLast()
}
} else if char == "]" || char == ")" { // ๋ซ๋ ๊ดํธ๊ฐ ๋จผ์ ๋์ค๋ฉด
s.append(char) // ์คํ์ pushํ๊ณ ๋ฐ๋ณต๋ฌธ ์ข
๋ฃ
break
}
}
// ์คํ์ ๊ดํธ ์ ๋ฌด ํ์ธ
if !s.isEmpty {
print("no")
} else {
print("yes")
}
}
// Swift
// ์ต์ ํ
while let str = readLine(), str != "." {
var s = [Character]() // stack
var isValid = true
for a in str {
if a == "(" || a == "[" {
s.append(a)
} else if a == ")" {
if s.isEmpty || s.last != "(" {
isValid = false
break
} else {
s.removeLast()
}
} else if a == "]" {
if s.isEmpty || s.last != "[" {
isValid = false
break
} else {
s.removeLast()
}
}
}
if s.isEmpty && isValid {
print("yes")
} else {
print("no")
}
}
< C++>
// C++
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
while(true){
string a;
getline(cin, a);
if(a == ".") break;
stack<char> s;
bool isValid = true;
for (auto c : a){
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(isValid && s.empty()){
cout << "yes" << '\n';
} else cout << "no\n";
}
}
๋ง๋ฌด๋ฆฌ
๋ชจ๋ ์์ธ ์ํฉ์ ๊ณ ๋ คํ์ฌ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค๋ ์ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.์ ๋ ์ฒ์์ ๋ค๋ฅธ ์ง์ ๊ดํธ๊ฐ ์ค๋ ์์ธ๋ฅผ ์ฝ๋์ ์์ฑํ์ง ์์ ์ค๋ ์๊ฐ ๊ณ ๋ฏผ์ ํ์ต๋๋ค. ๐ญ๋ํ, ๋ชจ๋ ์์ธ๋ฅผ ๊ณ ๋ คํ๋ค๊ณ ํด๋, ํด๋น ๋ ผ๋ฆฌ๋ฅผ ์ฝ๋์ ์ ๋ น์ฌ๋ด๋ ๊ฒ๋ ์ค์ํฉ๋๋ค.์๋ฅผ ๋ค์ด, Swift์ ๊ฒฝ์ฐ ๋ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ, ๊ฐ์ ๋ ผ๋ฆฌ์ ์ฝ๋๋ผ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋ ์ฝ๋๊ฐ ๋ ์ข์ ์ฝ๋์ ๋๋ค.
๋ชจ๋ ์์ธ ์ํฉ์ ๊ณ ๋ คํ๊ณ , ํด๋น ๋ ผ๋ฆฌ๋ฅผ ์ฝ๋์ ์ฝ๊ฒ ๊ตฌํํ๋ ์ฐ์ต๋ ํด์ผํ ๊ฒ ๊ฐ์ต๋๋ค. ๐ค
'Coding Test > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 2504๋ฒ - ๊ดํธ์ ๊ฐ (Swift, C++) (2) | 2024.02.29 |
---|---|
[BOJ] 10799๋ฒ - ์ ๋ง๋๊ธฐ (Swift, C++) (0) | 2024.02.26 |
[BOJ] 10845๋ฒ - ํ (Swift, C++) (0) | 2024.02.23 |
[BOJ] 10773๋ฒ - ์ ๋ก (Swift, C++) (0) | 2024.02.22 |
[BOJ] 5397๋ฒ - ํค๋ก๊ฑฐ (Swift, C++) (0) | 2024.02.21 |
- ๊ท๋๋ผ๋ฏธ ์์ด
- ๊ท๋๋ผ๋ฏธ ์์ด
- ๋ฒ์ฉ๊ณ ์ ์๋ณ
- ์๋ฃ ๊ตฌ์กฐ
- ํ
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- containerView
- Anyobject
- 5397
- C++
- ๊ณต๊ฐ ๋ณต์ก๋
- 10808
- ์์ด ๊ณต๋ถ
- 4949
- pageViewController
- root view controller
- ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- Swift
- 2023๋ ํ๊ณ
- ์ ๋ง๋๊ธฐ
- ๊ดํธ์ ๊ฐ
- Container View Controller
- ์์ด ๋ด์ค
- gitkraken
- BOJ
- tipkit
- ๊ท ํ์กํ ์ธ์
- remainder
- 2024๋ ๋ชฉํ
- ์คํ
- Total
- Today
- Yesterday