[ํ๋ก๊ทธ๋๋จธ์ค] Lv2: ์ฌ๋ฐ๋ฅธ ๊ดํธ
๋ฌธ์ ์ค๋ช
๊ดํธ๊ฐ ๋ฐ๋ฅด๊ฒ ์ง์ง์ด์ก๋ค๋ ๊ฒ์ '(' ๋ฌธ์๋ก ์ด๋ ธ์ผ๋ฉด ๋ฐ๋์ ์ง์ง์ด์ ')' ๋ฌธ์๋ก ๋ซํ์ผ ํ๋ค๋ ๋ป์
๋๋ค. ์๋ฅผ ๋ค์ด
"()()" ๋๋ "(())()" ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์
๋๋ค.
")()(" ๋๋ "(()(" ๋ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ์
๋๋ค.
'(' ๋๋ ')' ๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ก์ ๋, ๋ฌธ์์ด s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด๋ฉด true๋ฅผ return ํ๊ณ , ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ์ด๋ฉด false๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ์ฌํญ
์ ์ถ๋ ฅ ์
s | answer |
---|---|
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
function solution(s) {
var answer = s
.split(" ")
.every((e) =>
e[0] != "(" ? false : e[e.length - 1] != ")" ? false : true
);
return answer;
}
๊ตฌํ ์ ๊ทผ
1. split ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์์ด ์ ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํ
2. every ๋ฉ์๋๋ฅผ ํตํด e[0]~ e[๋ง์ง๋ง ์ธ๋ฑ์ค] ๋ฅผ ์ํํ๋ฉฐ ์
๋ ฅ ๊ฐ์ด ์กฐ๊ฑด์ ๋ง๋์ง blooean ๊ฐ์ผ๋ก ๋ฐํ.
๋ฌธ์ ์
๊ตฌํ๊น์ง๋ ์๋ฃ๊ฐ ๋๋๋ฐ ํ
์คํธ ์ผ์ด์ค 5, 11, 17 / ํจ์จ์ฑ ํ
์คํธ 2๋ฒ์์ ํต๊ณผ๋ฅผ ํ์ง ๋ชป ํจ.
์ด ์ง๋ฌธ์ ๋๊ธ์ฒ๋ผ ๋งจ ์๊ณผ ๋ค๊ฐ ๊ดํธ๊ฐ ์ ํํ๊ฒ ๋ซํ๋, ์ค๊ฐ์ ์ด์์ด ์๊ธฐ๋ฉด ๊ตฌ๋ถํ์ง ๋ชป ํ๋ ํจ์๊ฐ ๋จ.
๋๊ตฐ๋ค๋ ์คํ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ์ด๋ ์ฝ๋์ ํจ์จ์ฑ๋ ๊ณ ๋ ค๋ฅผ ํ์ด์ผ ํ๋ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ๋ค.
๊ฐ์
function solution(s) {
let answer = 0;
for (let i = 0; i < s.length; i++) {
if (s[i] === "(") answer += 1;
else answer -= 1;
if (answer < 0) answer = false;
console.log(answer);
}
return answer === 0;
}
์ฒซ ๋ฒ์งธ ๋ฐฉํฅ
1. for๋ฌธ์ ํตํด s[i]์ ๊ฐ๋ค ์ํํ์ฌ "(" ์กฐ๊ฑด๊ณผ ๋ง๋์ง ๋น๊ต
2. ๋น๊ต๋ฅผ ํตํด answer ๊ฐ์ ์ฆ๊ฐ
3. ์ฆ๊ฐ ๋ ๋ง์ง๋ง ๊ฐ์ด 0์ด ๋๋ค๋ฉด true๋ฅผ ๋ฐํ.
๋ฌธ์ ์
1. for๋ฌธ์ ์ํํ๋ ๋ง์ง๋ง if ์กฐ๊ฑด์์ answer์ false๋ฅผ ํ ๋น ํด๋ฒ๋ ค์ ๋ฌธ์ ๊ฐ ๋ ๊ฒ.
2. ๊ทธ๋ ๊ฒ๋๋ฉด ์งํ๋๋ ๋์ค answer ๊ฐ์ด ํ๋ฒ false๋ก ์ ์ธ ๋๋ค๊ฐ ๋ค์ for๋ฌธ์ ์ํํ๊ฒ ๋จ.
์ฆ, false๋ฅผ ๋ฐํํ๋ ๊ฒ์ด ์๋ ๊ฐ์ผ๋ก ํ ๋น๋์ด ๊ณ์ ์ํํ๊ฒ ๋๋ ๊ฒ.
ํด๊ฒฐ ๋ฐฉ๋ฒ
1. answer์ ๊ฐ์ ํ ๋นํ๋ ๊ฒ์ด ์๋ ๋ฐ๋ณต์ ๋น ์ ธ๋์ ๊ฐ์ ๋ฐํํ๋ ๊ฒ.
function solution(s) {
let answer = 0;
for (let i = 0; i < s.length; i++) {
if (s[i] === "(") answer += 1;
else answer -= 1;
if (answer < 0) return false; // ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ false ๋ฐํํ์ฌ ๋ฐ๋ณต ์ข
๋ฃ.
}
return answer === 0; // ์ ์ฒด ๋ฌธ์์ด ๊ฒ์ฌ ํ answer ๊ฐ์ด 0์ด๋ฉด true, ์๋๋ฉด false ๋ฐํ
}
function solution(s){
let open = 0;
for(let i=0; i<s.length; i++) {
if(s[i] === '(') {
open++;
continue;
}
if(!open) return false;
open--;
}
return open ? false : true;
}
์ด๋ฒ ๊ธฐํ๋ฅผ ํตํด continue ์ง์์๋ฅผ ์ฒ์ ์๊ฒ ๋๋๋ฐ,,
๋ฐ๋ณต๋ฌธ ๋น ์ ธ๋์ค๊ธฐ
continue ์ง์์๋ break์ '๊ฐ๋ฒผ์ด ๋ฒ์ โ์ ๋๋ค.
continue๋ ์ ์ฒด ๋ฐ๋ณต๋ฌธ์ ๋ฉ์ถ์ง ์์ต๋๋ค.
๋์ ์ ํ์ฌ ์คํ ์ค์ธ ์ดํฐ๋ ์ด์ ์ ๋ฉ์ถ๊ณ ๋ฐ๋ณต๋ฌธ์ด ๋ค์ ์ดํฐ๋ ์ด์ ์ ๊ฐ์ ๋ก ์คํ์ํค๋๋ก ํฉ๋๋ค(์กฐ๊ฑด์ ํต๊ณผํ ๋).
continue๋ ํ์ฌ ๋ฐ๋ณต์ ์ข ๋ฃ์ํค๊ณ ๋ค์ ๋ฐ๋ณต์ผ๋ก ๋์ด๊ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ ๋ฐ๋ณต๋ฌธ์ continue๋ฅผ ์ฌ์ฉํด ํ์๋ง ์ถ๋ ฅํฉ๋๋ค.
for (let i = 0; i < 10; i++) {
// ์กฐ๊ฑด์ด ์ฐธ์ด๋ผ๋ฉด ๋จ์์๋ ๋ณธ๋ฌธ์ ์คํ๋์ง ์์ต๋๋ค.
if (i % 2 == 0) continue;
alert(i); // 1, 3, 5, 7, 9๊ฐ ์ฐจ๋ก๋๋ก ์ถ๋ ฅ๋จ
}
i๊ฐ ์ง์์ด๋ฉด continue๊ฐ ๋ณธ๋ฌธ ์คํ์ ์ค๋จ์ํค๊ณ ๋ค์ ์ดํฐ๋ ์ด์
์ด ์คํ๋๊ฒ ํฉ๋๋ค(i๊ฐ ํ๋ ์ฆ๊ฐํ๊ณ , ๋ค์ ๋ฐ๋ณต์ด ์คํ๋จ).
๋ฐ๋ผ์ alert ํจ์๋ ์ธ์๊ฐ ํ์์ผ ๋๋ง ํธ์ถ๋ฉ๋๋ค.
#1
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;
}