2023. 10. 26. 14:31ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1231
-> ์ด์ ๋ฌธ์ ํ์ด
1. ์ฌ๋ฐ๋ฅธ ๊ดํธ
์ค๋ช
๊ดํธ๊ฐ ์ ๋ ฅ๋๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด๋ฉด “YES", ์ฌ๋ฐ๋ฅด์ง ์์ผ๋ฉด ”NO"๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
(())() ์ด๊ฒ์ ๊ดํธ์ ์์ด ์ฌ๋ฐ๋ฅด๊ฒ ์์นํ๋ ๊ฑฐ์ง๋ง, (()()))์ ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ๊ดํธ ๋ฌธ์์ด์ด ์ ๋ ฅ๋ฉ๋๋ค. ๋ฌธ์์ด์ ์ต๋ ๊ธธ์ด๋ 30์ด๋ค.
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ YES, NO๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
(()(()))(()
์์ ์ถ๋ ฅ 1
NO
๋ฌธ์ ํ์ด 1
public String solution(String s)
{
String answer = "NO";
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray())
{
if (c == '(') {
stack.push(c);
}
else if (c == ')') {
if (stack.size() != 0) {
if (stack.peek() == '(')
{
stack.pop();
}
}else {
stack.push(c);
}
}
}
if (stack.size() == 0)
return "YES";
return answer;
}
๐ฉ๐ป : ์ด ๋ฌธ์ ๋ ์์ ์ ํ๋ก๊ทธ๋๋จธ์ค์์ ํ๋ฒ ํด๋ดค๋ ๊ธฐ์ต์ด ์๋ ๋ฌธ์ ์ด๋ค.
๋ณดํต Stack ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ผ ๋ ๊ดํธ ๊ด๋ จ ๋ฌธ์ ๊ฐ ๊ผญ ๋์จ๋ค๊ณ ํ๋ค. ใ ใ (์ฐธ๊ณ )
์ผ๋จ ์ด ๋ฌธ์ ๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ฉด ๊ทธ ๋ฌธ์์ด์ ๊ดํธ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด๋ฉด YES ๋ฆฌํด ์๋๋ฉด NO ๋ฆฌํดํ๋ ๋ฌธ์ ์ด๋ค.
์์ ์ ๋ ฅ
(()(()))(()
์ ๋ณด๋ฉด '(' ํ๋ ๋จ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ผ์ ๋ต์ NO๊ฐ ์ถ๋ ฅ๋์ด์ผ ํ๋ค.
์ฐ์ Character ๋ฌธ์๋ฅผ ๋ด๋ Stack ์ ๋ง๋ค๊ณ , ์ฃผ์ด์ง ๋ฌธ์์ด์ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ฐ๋ณต๋ฌธ ๋๋ ค์ ํด๋น ๋ฌธ์๊ฐ '(' ์ด๋ฉด stack์ ๋ฃ๊ณ , ')' ์ด๋ฉด stack์์ pop ํด์ฃผ๋ฉด ๋๋ค.
๊ทผ๋ฐ ์ด๋ stack์ด ๋น์ด์๋ ๊ฒฝ์ฐ์ pop์ ํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค. (์๋๋ฐ popํ๋ ค๊ณ ํด์) ๊ทธ๋ฌ๋ฏ๋ก stack.size๊ฐ 0์ด ์๋๊ณ , stack์ ๊ฐ์ด '(' ์ผ ๊ฒฝ์ฐ์ pop์ ํ๋๋ก ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ฝ stack.size๊ฐ 0์ด๋ฉด stack์ ')' ๊ฐ์ ๋ฃ์ด์ฃผ๋๋ก ํ๋ค. (์ด ๋ถ๋ถ์ ๊ตณ์ด ์ํด๋ ๋์ ํ ๋ฐ,.)
์ด๋ ๊ฒ ๋ฐ๋ณต๋ฌธ์ ๋ค ๋๊ณ ๋์ stack์ size๊ฐ 0์ด๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ๋ผ๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ YES๋ฅผ ๋ฆฌํดํ๋ฉด ๋๊ณ
size๊ฐ 0์ด ์๋๋ผ๋ฉด ๊ทธ๋๋ก NO๋ฅผ ๋ฆฌํดํ๋ค.
๋ฌธ์ ํ์ด 2
public String solution2(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;
}
๐พ : ๊ฐ์ฌ๋์ ์ด ๋ฌธ์ ๋ฅผ ๋ ๊ฐ๋จํ๊ฒ ํ์๋ค. ์ฐ์ ์ฃผ์ด์ง ๋ฌธ์์ด์ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ for๋ฌธ ๋๋ ค stack์ ๋ฃ๋ ๊ฑด ๋์ผํ๋ค. ์ฐ์ char x ๊ฐ '(' ์ด๋ฉด stack์ push ํ๊ณ , ')' ์ด๋ฉด stack์์ pop ํ๋ฉด ๋๋ค. ๊ทผ๋ฐ ์ด๋ ๋ง์ฐฌ๊ฐ์ง๋ก stack์ด ๋น์ด ์์ผ๋ฉด ')'๊ฐ ๋ ๋ง๋ค๋ ์๋ฏธ์ด๋ฏ๋ก ์ด๋๋ ๋ฐ๋ก return NO ํด์ฃผ๋ฉด ๋๋ค. ๊ทธ๋ฆฌ๊ณ stack์ด ๋น์ด์์ง ์๋ค๋ฉด stack์์ ')' ๊ฐ์ 'pop' ํด์ฃผ๋ฉด ๋๋ค.
๋ฐ๋ณต๋ฌธ์ ๋ค ๋๊ณ ๋์ stack์ด ๋น์ด์๋์ง ํ๋ฒ ๋ ๊ฒ์ฌ๋ฅผ ํ๋๋ฐ ์ด๋ ๋น์ด์์ง ์๋ค๋ ๊ฒ์ '('์ ๊ฐ์๊ฐ ๋ ๋ง์์ ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ผ๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ NO๋ฅผ ๋ฆฌํดํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก stack์ด ๋น์ด์๋ค๋ฉด ๊ทธ๊ฑด ์ฌ๋ฐ๋ฅธ ๊ดํธ๋ผ๋ ๋ง์ด๊ธฐ ๋๋ฌธ์ YES ๋ฅผ ๋ฆฌํดํด์ฃผ๋ฉด ๋๋ค.