์๊ณ ๋ฆฌ์ฆ ์คํฐ๋์์ ๊ฐ์ด ํผ ๋ฌธ์ ์ธ๋ฐ,
์ฒ์์ผ๋ก ํจ์จ์ฑ ํ ์คํธ๋ผ๋ ์น๊ตฌ๋ฅผ ๋ฐ๊ฒฌํ๋ค.
//(โ)
function solution(s) {
if (s.length < 1) return false;
if (s.startsWith(")")) {
return false;
}
while (s.includes("()")) {
s = s.replaceAll("()", "")
}
return s == "" ? true : false;
}
์ด ์ฝ๋๋ ์ฒ์ ์์ฑํ๋ ์ฝ๋์ธ๋ฐ,
ํ ์คํธ ์์ฒด๋ ํต๊ณผํ์ง๋ง,
ํจ์จ์ฑ ํ ์คํธ์์ ์คํจํ๋ค๊ณ ๋์๋ค.
์๋ก ๋ง๋ ์ฝํ ์ ๋ฒฝ,,,,
(์ ํ์ฑ ํ ์คํธ๋ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ ํด์ฃผ๋ฉด ๋๋ค)
๋น๋๋์ ํํธ๋ฅผ ๊ฐ์ง๊ณ ์ด๋ ๊ฒ ์ ๋ ๊ฒ ํ์๊ฐ ์ ๋๋ฅผ ์ค๋ฌด๊ณ ๊ฐ๋ฅผ ํด๋ดค๋๋ฐ, ๋ด๊ฐ ํ๊ณ ์ถ์๋ ๋ฐฉ์์ผ๋ก๋ ๋์ ํ ํต๊ณผ๊ฐ ์๋๋ค.๐ฟ
ํจ์จ์ฑ ํ ์คํธ๋ ๋ฌด์์ผ๊น?
ํ๋ก๊ทธ๋๋จธ์ค ์ฌ์ดํธ์์๋ 'ํ ์คํธ ์ฝ๋์ ์๊ฐ๋ณต์ก๋' ๋ฅผ ํ ์คํธํ๋ค๊ณ ๊ฐ๋จํ ๋์์๋ค.
์ง๋๋ฒ์ ์ ๊น ์ค์น๋ฏ ๊ณต๋ถํ๋ ๋น O ๊ฐ ๋ฐ๋ก ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ํ๋ด๋๋ฐ, ์ผ๋ฐ์ ์ธ ๋ฐ๋ณต๋ฌธ์ ๊ฒฝ์ฐ O(N) ์ด ๋๋ค๊ณ ๋ง ์๊ณ ์์๋ค.
ํจ์จ์ฑ
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ด๋ค ์ฝ๋๋ฅผ ์์ฑํ์ ๋, ์ผ๋ง๋ ํจ์จ์ ์ธ์ง ํ๋จํ ์ ์๋ ๊ธฐ์ค์ด๋ค. ์ํ ์๊ฐ๊ณผ ์ฌ์ฉ ๋ฉ๋ชจ๋ฆฌ์์ผ๋ก ์ค์ํ๋ค. ์ฑ๋ฅ๊ณผ๋ ๊ด๊ณ ์์ง๋ง ๊ฐ๋ ์ฑ์ด ์ข์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ๋ ์ค์ํ๋ค.
- ๋ถ์กฑํ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ ์ถ๊ฐ๋ฅผ ํตํด ํด๊ฒฐํ ์ ์์ง๋ง ๋ถ์กฑํ ์๊ฐ์ ํด๊ฒฐํ ์ ์๋ค. ๋ฌธ์ ์ ๋ฐ๋ผ ์ํ ์๊ฐ๋ณด๋ค ์ฌ์ฉ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ ์ค์ํ ์ํฉ์ด ์์ ์ ์์ง๋ง ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ํ์๊ฐ์ด ๋ ์ค์ํ๋ค.
- ์ํ ์๊ฐ์ ๋ฌธ์ ์ ํฌ๊ธฐ์ ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋๋ ๋ฌธ์ ์ ํฌ๊ธฐ๋ฅผ ๋จผ์ ํ์ ํ๊ณ ์ ํฉํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๊ฐํด์ผ ํ๋ค.
์ํ ์๊ฐ
์ ๋ ฅ์ ํฌ๊ธฐ N์ ๋ํด์ ์ํ ์๊ฐ์ ๋๋ต์ ์ผ๋ก ํํํ๋ค. ์ด๋ค ํด๊ฒฐ ๋ฐฉ์์ ์ ์ฉํ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ณ์ฐํด๋ณด๊ณ ์ ํฉํ ์ํ ์๊ฐ์ด๋ผ๊ณ ํ๋จ๋๋ฉด ์ ์ฉํ๋ค. Big O ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค. ์ฆ, ์ต์ ์ ๊ฒฝ์ฐ์ ์๊ฐ์ด ์ผ๋ง๋ ๊ฑธ๋ฆด์ง ์ ์ ์๋ค.
O(100000000)์ ๊ฒฝ์ฐ ์ํ ์๊ฐ์ ๋๋ต์ ์ผ๋ก 1์ด ์ ๋๋ผ๊ณ ์๊ฐํ ์ ์๋ค. ์๊ฐ ์ ํ์ด ์๋ ๋ฌธ์ ์ ๊ฒฝ์ฐ ๋๋ต์ ์ธ ๋์ ์ ํตํด ๋ฌธ์ ํด๊ฒฐ์ ์ ํฉํ์ง ์์ ์ํ ์๊ฐ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ์ธํ ์ ์๋ค.
๋๋ต 1์ด๊ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ ๋ณต์ก๋
์๊ฐ ๋ณต์ก๋N
O(1) | - |
O(log) | - |
O(N) | 100000000 |
O(N log) | 5000000 |
O(N) | 10000 |
O(N) | 500 |
O(2) | 20 |
O(N!) | 10 |
์๊ฐ ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํ๋ ์ด์
ex) ์ฐ๋ฆฌ๋๋ผ ์ธ๊ตฌ 5000๋ง๋ช ์ค์์ ํ ์ฌ๋์ ์กฐํํ๋ ์๊ณ ๋ฆฌ์ฆ 2๊ฐ๊ฐ ์๋ค.
A์๊ณ ๋ฆฌ์ฆ: O(log n)
B์๊ณ ๋ฆฌ์ฆ: O(n^2)
->A์๊ณ ๋ฆฌ์ฆ์ 25๋ฒ, B์๊ณ ๋ฆฌ์ฆ์ 2500000000000000๋ฒ์ ์ฐ์ฐ์ ์ํํ๋ค.
->A์๊ณ ๋ฆฌ์ฆ์ 1์ด๋ ์๋๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
->B์๊ณ ๋ฆฌ์ฆ์ 120์ผ ์ ๋ ๊ฑธ๋ฆฐ๋ค..
(ํ..)
ํ๋์จ์ด๋ฅผ ๋ฐ์ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์(๋ฌด์ด์ ๋ฒ์น: 1๋ ๋ง์ ๋ฐ๋์ฒด ์ง์ ๋ฅ ์ด 2๋ฐฐ์ฉ..)
์ํํธ์จ์ด์ ๋ฐ์ ์๋๊ฐ ์๋์ ์ผ๋ก ๋๋ฆฌ๊ฒ ๋๊ปด์ง๊ธด ํ์ง๋ง...
๊ทธ๋ผ์๋ ์ฐ๋ฆฌ๋ ์๊ฐ์ด๋ ์์คํ ์์์ ๋ญ๋นํ์ง ์๊ธฐ ์ํด์ ์ธ์ ๋ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํ ๋ ธ๋ ฅ์ ํ๋ค.
์ด๋ฌํ ๋ ธ๋ ฅ์ ์ต์ ํ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๐ด ํจ์จ์ฑ ํ ์คํธ๊ฐ ํต๊ณผ๊ฐ ์๋๋ ๊ฒฝ์ฐ
-> ์๊ณ ๋ฆฌ์ฆ ์์ฒด๋ฅผ ์๋ชป ์๊ฐํ๊ณ ์์ ์๋ ์๋ค. ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผํ๋ค.
๊ธฐ์กด์ ํ์๋ ๋ฐฉ์์ ๋ณด๋ฉด
")" ๋ก ์์ํ๋ ํ๊ฐ์ง ๊ฒฝ์ฐ๋ง ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ while ๋ฌธ ์์ includes, replaceAll ์ ๋ฃ์๊ฒ ๋ฌธ์ ์๋ค.
includes ํ๊ณ ์๋ค๋ฉด -> replaceAll ๋ก () ๋ฅผ ํ๋ฒ์ ์์ ์ฃผ๋๋ฐ,
์์ ๋ฉด์ ๋ค์ s ์ ์ฌํ ๋นํ๋ ๋น๋น๋๋ ์ฝ๋์๋ค.
์ ๋ ๊ฒ ์ ์ฒด๋ฅผ ๋๊ณ ๋๋ ๊ณ ์ฐจํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์จ์ฑ ํ ์คํธ์์ ํต๊ณผํ ์ ์๋ค!
์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ๋ค์ ๋ดค๋๋ฐ, ๋์ฒด๋ก '(' ๊ฐฏ์์ ')' ๊ฐฏ์๋ฅผ ์ด์ฉํ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค.
array ๋ก ๋ฐ๊พผ ํ์ด๋ค๋ ์์์ง๋ง,
ํ๋ณํ์ด ์ผ์ด๋์ง ์์ ๊ฐ์ฅ ๊น๋ํ๋ค๊ณ ์๊ฐํ๋ ํ์ด๋ฅผ ๊ฐ์ ธ์๋ค.
(๋น๋๋๊บผ์ ๊ป๊ป๊ป ์ด์ฏค๋๋ฉด ๋น๋๋ ๋ด ๊ต๊ณผ์)
function solution(s) {
let count = 0;
for (const char of s) {
if (char === '(') count++;
else count--;
if (count < 0) return false;
}
return count === 0;
}
for ๋ฌธ์ of ๋ฅผ ์ด์ฉํด ๋ฌธ์ ํ๋ํ๋ ํ์ํ๋ ๋ฐฉ๋ฒ์ธ๋ฐ, ํ์์ ํ๋ฉด์ ๊ฐ๋จํ๊ฒ count ์ ์ซ์๋ฅผ ๋ํ๊ณ ๋นผ๋ ๋ฐฉ์์ด๋ค.
์ ๊ทธ๋ฆฌ๊ณ return ์ falsy ๊ฐ์ ์ด์ฉํด ๊ฐ๋จํ ๋ํ๋ธ ๊ฒ๋ ๋๋ฌด ์ข๋ค!
(๋์์ผ๋ฉด ์ผํญ์ฐ์ฐ์๋ก ? true : false ์ผ์ ํ ๋ฐ)
์๋ ํ์ด๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด ์ค ๋น์ทํ ํ์ด.
๋ํ๊ณ ๋นผ๋ ๋ถ๋ถ์ ์ผํญ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ์กฐ๊ธ ๋ ๊ฐ๋ ์ฑ์ด ์ข์๋ณด์ธ๋ค.
function solution(s){
let cum = 0
for (let paren of s) {
cum += paren === '('? 1: -1
if(cum < 0) {
return false
}
}
return cum === 0? true: false;
}
์๋ฉด ์ ์๋ก ๊ณต๋ถํ ๊ฒ ์ ๋ง ๋ง๋ค!
์ ๊ธฐํ ์ปดํฐ ์ธ์!
๋ด์ฉ ์ถ์ฒ
https://mimimimamimimo.tistory.com/2
'ํ์ ๊ณต๋ถ > ๐ซง ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ (0) | 2023.06.02 |
---|---|
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ๋ ์ ์ ์ฌ์ด์ ํฉ (0) | 2023.06.02 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์ ์ ์ ๊ณฑ๊ทผ ํ๋ณ (0) | 2023.05.29 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์ต๋๊ฐ๊ณผ ์ต์๊ฐ (0) | 2023.05.29 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ํน๋ณํ ์ด์ฐจ์ ๋ฐฐ์ด 1 (0) | 2023.05.29 |