โ ๋ฌธ์ ์ค๋ช
๊ดํธ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ก์ ๋, ์ด ๋ฌธ์์ด์ด ์ฌ๋ฐ๋ฅธ ๊ดํธ๋ก ๊ตฌ์ฑ๋์ด ์๋์ง ํ๋จํ๋ ํจ์๋ฅผ ๊ตฌํํ์ธ์.
์ฌ๋ฐ๋ฅธ ๊ดํธ๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๋ง์กฑํด์ผ ํฉ๋๋ค:
• ์ฌ๋ ๊ดํธ '('๊ฐ ๋จผ์ ๋์ค๊ณ , ๊ทธ์ ๋ง๋ ๋ซ๋ ๊ดํธ ')'๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ง์ด์ง ๊ตฌ์กฐ
• ์์
1๏ธโฃ "()()" → true
2๏ธโฃ "(())()" → true
3๏ธโฃ ")()(" → false
๐ ์ ํ ์กฐ๊ฑด
• ๋ฌธ์์ด s์ ๊ธธ์ด: 1 ์ด์ 100,000 ์ดํ
• ๋ฌธ์์ด์ '(', ')' ๋ฌธ์๋ก๋ง ๊ตฌ์ฑ๋จ
๐ ํ์ด ์ ๋ต
• ์ฌ๋ ๊ดํธ '('๋ฅผ ๋ง๋๋ฉด ์นด์ดํธ๋ฅผ +1
• ๋ซ๋ ๊ดํธ ')'๋ฅผ ๋ง๋๋ฉด ์นด์ดํธ๋ฅผ -1
• ์นด์ดํธ๊ฐ ์ค๊ฐ์ ์์๊ฐ ๋๋ ์๊ฐ → false (๋ซ๋ ๊ดํธ๊ฐ ๋จผ์ ๋ฑ์ฅ)
• ๋ชจ๋ ๋ฌธ์๋ฅผ ์ํํ ๋ค, ์นด์ดํธ๊ฐ 0์ด๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ → true, ๊ทธ๋ ์ง ์์ผ๋ฉด false
โ ์ฝ๋ฉ
class Solution {
boolean solution(String s) {
boolean answer = true;
int count = 0;
for(int i = 0 ; i < s.length() ; i++){
char c = s.charAt(i);
if(c == ')'){
count--;
if(count < 0){
return false;
}
} else {
if(c == '('){
count++;
}
}
}
return count == 0;
}
}
๐ก ํด์ค
• ๋ฌธ์ ์์ ์๊ตฌํ๋ ๊ฑด ์คํ์ ์ง์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๊ดํธ์ ๊ท ํ์ ํ๋จํ๋ ๋ฐฉ์
• ์คํ ๋์ ์ ์ํ count๋ฅผ ์ฌ์ฉํด ์ด๋ฆฐ ๊ดํธ์ ๊ฐ์๋ฅผ ์ถ์
• ๋ซ๋ ๊ดํธ๊ฐ ๋จผ์ ๋์ค๋ฉด ๋ฐ๋ก false ๋ฐํํ์ฌ ๋ถํ์ํ ์ฐ์ฐ์ ์ค์ผ ์ ์์
• ์ต์ข ์ ์ผ๋ก ์ด๋ฆฐ ๊ดํธ ๊ฐ์์ ๋ซํ ๊ดํธ ๊ฐ์๊ฐ ๊ฐ์์ผ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด