๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/12909
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๊ดํธ๊ฐ ๋ฐ๋ฅด๊ฒ ์ง์ง์ด์ก๋ค๋ ๊ฒ์ '(' ๋ฌธ์๋ก ์ด๋ ธ์ผ๋ฉด ๋ฐ๋์ ์ง์ง์ด์ ')' ๋ฌธ์๋ก ๋ซํ์ผ ํ๋ค๋ ๋ป์ ๋๋ค. ์๋ฅผ ๋ค์ด
- "()()" ๋๋ "(())()" ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ ๋๋ค.
- ")()(" ๋๋ "(()(" ๋ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ์ ๋๋ค.
'(' ๋๋ ')' ๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ก์ ๋, ๋ฌธ์์ด s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด๋ฉด true๋ฅผ return ํ๊ณ , ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ์ด๋ฉด false๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- ๋ฌธ์์ด s์ ๊ธธ์ด : 100,000 ์ดํ์ ์์ฐ์
- ๋ฌธ์์ด s๋ '(' ๋๋ ')' ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
s | answer |
"()()" | true |
"(()()" | true |
")()(" | false |
"(()(" | false |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1,2,3,4
- ๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
// ๊ดํธ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฌธ์์ด ์คํ ์์ฑ
Stack<Character> stack = new Stack<>();
// ๋ฐ๋ณต๋ฌธ์ ํ์ฉํ์ฌ ๊ดํธ ํ์ธ
for (char c : s.toCharArray()) {
// ๋ง์ฝ ์ด๋ฆฐ ๊ดํธ์ธ ๊ฒฝ์ฐ
if (c == '(') {
// ์คํ์ ๋ฌธ์ c ์ถ๊ฐ
stack.push(c);
}
// ๋ง์ฝ ๋ซํ ๊ดํธ์ผ ๊ฒฝ์ฐ
if (c == ')') {
// ๋ง์ฝ ์คํ์ด ๋น์ด์์ ๊ฒฝ์ฐ
if (stack.isEmpty()) {
// false ๋ฐํ
return false;
}
// ๋ง์ง๋ง ๊ฐ ์ญ์
stack.pop();
}
}
// ๋ง์ฝ ์คํ์ด ๋น์ด์์ง ์์ ๊ฒฝ์ฐ
if (!stack.isEmpty()) {
// answer์ false ์ ์ฅ
answer = false;
}
// answer ๋ฐํ
return answer;
}
}
๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์๊ฐํ ๋ฐฉํฅ
- ๊ดํธ๋ฅผ ์์๋๋ก ์ ์ฅํ๊ธฐ ์ํ ์คํ ํ์
- ์ด๋ฆฐ ๊ดํธ์ผ ๊ฒฝ์ฐ ์ ์ฅ, ๋ซํ ๊ดํธ์ผ ๊ฒฝ์ฐ ์คํ์ ์ ์ฅ๋ ์ด๋ฆฐ ๊ดํธ ํ๋ ์ญ์
- ์คํ์ ๊ฐ์ด ์์ ๋ ๋ซํ ๊ดํธ์ด๊ฑฐ๋, ๋ฐ๋ณต๋ฌธ์ด ์ข ๋ฃ๋ ํ ์คํ์ ๊ฐ์ด ๋จ์์๋ค๋ฉด false
์คํ์ ์ฌ์ฉํ์ง ์์ ์ฝ๋
class Solution {
boolean solution(String s) {
boolean answer = true;
// ๋ณ์ count์ 0 ์ ์ฅ
int count = 0;
// ๋ฐ๋ณต๋ฌธ์ ํ์ฉํ์ฌ ๊ดํธ ํ์ธ
for (char c : s.toCharArray()) {
// ๋ง์ฝ ์ด๋ฆฐ ๊ดํธ์ธ ๊ฒฝ์ฐ
if (c == '(') {
// count +1
count++;
}
// ๋ง์ฝ ๋ซํ ๊ดํธ์ธ ๊ฒฝ์ฐ
if (c == ')') {
// ๋ง์ฝ count ๊ฐ์ด 0์ผ ๊ฒฝ์ฐ
if (count == 0) {
// false ๋ฐํ
return false;
}
// count -1
count--;
}
}
// ๋ง์ฝ count๊ฐ 0์ด ์๋ ๊ฒฝ์ฐ
if (count != 0) {
// false ๋ฐํ
return false;
}
// answer ๋ฐํ
return answer;
}
}
๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์๊ฐํ ๋ฐฉํฅ
- ์ด๋ฆฐ ๊ดํธ์ผ ๊ฒฝ์ฐ count +1, ๋ซํ ๊ดํธ์ผ ๊ฒฝ์ฐ count -1
- count ๊ฐ์ด 0์ผ ๋ ๋ซํ ๊ดํธ๊ฐ ๋์ค๋ฉด false
- ๋ฐ๋ณต๋ฌธ์ด ์ข ๋ฃ๋ ํ count ๊ฐ์ด 0์ด ์๋๋ผ๋ฉด false
'๐งฉ ํ๋ก๊ทธ๋๋จธ์ค > ๐ต ์๊ณ ๋ฆฌ์ฆ ํ์ด(Java)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ๋ก๊ทธ๋๋จธ์ค/Java ] JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (0) | 2025.03.27 |
---|---|
[ ํ๋ก๊ทธ๋๋จธ์ค/Java ] ์ต์๊ฐ ๋ง๋ค๊ธฐ (1) | 2025.03.26 |
[ ํ๋ก๊ทธ๋๋จธ์ค/Java ] ์ต๋๊ฐ๊ณผ ์ต์๊ฐ (1) | 2025.03.25 |
[ ํ๋ก๊ทธ๋๋จธ์ค/Java ] ๋ฌธ์์ด ๋ด p์ y์ ๊ฐ์ (1) | 2025.03.24 |
[ ํ๋ก๊ทธ๋๋จธ์ค/Java ] ์ฒด์ก๋ณต (1) | 2025.01.24 |