https://school.programmers.co.kr/learn/courses/30/lessons/12909?utm_source=chatgpt.com
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์ ๋ฅผ ํ๋ฉด์, ์ฒ์์๋ ๋จ์ํ ๊ดํธ์ ๊ฐ์๋ง ๋ง์ผ๋ฉด ๋๋ ์ค ์์๋ค.
ํ์ง๋ง ์ด ๋ฌธ์ ์ ํต์ฌ์ ๊ฐ์๊ฐ ์๋๋ผ ์์์๋ค.
์ด๋ฒ ๊ธ์์๋ ๋ด๊ฐ ์ฒ์์ ์ด๋ป๊ฒ ์ ๊ทผํ๊ณ , ์ด๋ค ๋ถ๋ถ์ ์๋ชป ์ง์๋์ง, ๊ทธ๋ฆฌ๊ณ ์ ์์ ์ด ํ์ํ์ง ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
๋ฌธ์ ์ดํด
๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ก์ ๋, ๊ดํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ง์ด์ก๋์ง ํ๋จํด์ true ๋๋ false๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ๋ค.
์๋ฅผ ๋ค๋ฉด:
- "()()" → true
- "(())()" → true
- ")()(" → false
- "(()(" → false
์ฒ์ ๋ณด๋ฉด ( ๊ฐ์์ ) ๊ฐ์๋ง ๊ฐ์ผ๋ฉด ๋ ๊ฒ ๊ฐ์ง๋ง, ์ค์ ๋ก๋ ๋ซ๋ ๊ดํธ๊ฐ ๋จผ์ ๋์ค๋ฉด ์ ๋๋ค.
์ฆ,
- ์ต์ข ๊ฐ์๋ ๋ง์์ผ ํ๊ณ
- ์ค๊ฐ ๊ณผ์ ์์๋ ์ฌ๋ฐ๋ฅธ ์์๋ฅผ ์ ์งํด์ผ ํ๋ค
์ด ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ๋ง์กฑํด์ผ ํ๋ค.
์ฒ์ ์์ฑํ๋ ์ฝ๋
๋ด๊ฐ ์ฒ์ ์์ฑํ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
function solution(s){
var answer = true;
console.log('Hello Javascript')
let score = 0;
s.split('').forEach((item) => {
if(item === '(') {
score += 1;
}else if(item === ')') {
score -= 1;
}
})
return score === 0 ? true : false;
}
์ฒ์ ์๊ฐ์ ๋จ์ํ๋ค.
- ( ์ด๋ฉด +1
- ) ์ด๋ฉด -1
- ๋ง์ง๋ง ๊ฒฐ๊ณผ๊ฐ 0์ด๋ฉด ์ง์ด ๋ง๋ ๊ฒ
์ ์ด ์ฝ๋๊ฐ ํ๋ ธ๋๊ฐ
์ด ์ฝ๋๋ ์ต์ข
ํฉ๊ณ๋ง ๊ฒ์ฌํ๋ค.
์ฆ, ๊ดํธ์ ๊ฐ์๋ง ๊ฐ์ผ๋ฉด true๋ฅผ ๋ฐํํ๋ค.
ํ์ง๋ง ์ด ๋ฌธ์ ๋ ์์๋ ์ค์ํ๋ค.
์๋ฅผ ๋ค์ด ")("๋ฅผ ๋ณด์.
๋ด๊ฐ ์์ฑํ ๋ฐฉ์์ผ๋ก ๊ณ์ฐํ๋ฉด
- ์ฒซ ๋ฒ์งธ ๋ฌธ์ ) → score = -1
- ๋ ๋ฒ์งธ ๋ฌธ์ ( → score = 0
์ต์ข ์ ์ผ๋ก score === 0 ์ด๋ฏ๋ก true๊ฐ ๋๋ค.
ํ์ง๋ง ์ค์ ๋ก๋ ")("๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ค.
์์๋ถํฐ ๋ซ๋ ๊ดํธ๊ฐ ๋จผ์ ๋์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ, ๋ด๊ฐ ๋์น ํต์ฌ์ ์ด๊ฒ์ด๋ค.
๊ดํธ ๋ฌธ์ ๋ ๋ง์ง๋ง ๊ฐ์๋ง ๋ง๋๋ค๊ณ ๋์ด ์๋๋ผ, ์ค๊ฐ ๊ณผ์ ์์๋ ์ ๋ ๋ซ๋ ๊ดํธ๊ฐ ๋ ๋ง์์ง๋ฉด ์ ๋๋ค.
ํต์ฌ ์์ด๋์ด
์ด ๋ฌธ์ ๋ score๋ฅผ ์ด์ฉํด ํ ์ ์๋ค.
- ( ๋ฅผ ๋ง๋๋ฉด score += 1
- ) ๋ฅผ ๋ง๋๋ฉด score -= 1
์ฌ๊ธฐ์ ์ค์ํ ์กฐ๊ฑด์ด ํ๋ ๋ ์๋ค.
์ค๊ฐ์ score < 0 ์ด ๋๋ฉด ๋ฐ๋ก false
์ด ์๋ฏธ๋ ๊ณง:
- ์ง๊ธ๊น์ง ๋์จ ๊ดํธ ์ค์์
- ๋ซ๋ ๊ดํธ๊ฐ ์ฌ๋ ๊ดํธ๋ณด๋ค ๋ง์์ก๋ค๋ ๋ป
์ฆ, ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ ์๋ฏธ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌธ์์ด์ ๋๊น์ง ๋ค ๋์์ ๋:
- score === 0 ์ด๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ
- ์๋๋ฉด ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ
์์ ํ ์ ๋ต ์ฝ๋
function solution(s) {
let score = 0;
for (const ch of s) {
if (ch === '(') {
score += 1;
} else {
score -= 1;
}
if (score < 0) {
return false;
}
}
return score === 0;
}
์ forEach๋ณด๋ค for...of๋ฅผ ์ฌ์ฉํ๋๊ฐ
์ฒ์์๋ ์๋์ฒ๋ผ ์์ฑํ๋ค.
...
});
์ด ๋ฐฉ์๋ ๋ฌธ์์ด์ ์ํํ ์๋ ์์ง๋ง, ์ด ๋ฌธ์ ์์๋ for...of๊ฐ ๋ ์ ํฉํ๋ค.
1. split('')๋ ๋ฐฐ์ด์ ์๋ก ๋ง๋ ๋ค
split('')๋ ๋ฌธ์์ด์ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ฐ๊พผ๋ค.
์๋ฅผ ๋ค์ด:
๊ฒฐ๊ณผ:['a', 'b', 'c']
์ฆ, ๋ฌธ์์ด์ ์ํํ๊ธฐ ์ ์ ๋ฐฐ์ด์ ํ ๋ฒ ๋ ์์ฑํ๋ค.
๋ฐ๋ฉด for...of๋ ๋ฌธ์์ด์ ๋ฐ๋ก ์ํํ ์ ์๋ค.
...
}
๋ถํ์ํ ๋ฐฐ์ด ์์ฑ์ด ์์ด์ ๋ ๊น๋ํ๋ค.
๋ด๊ฐ ์๋ชป ์ง์๋ ๋ถ๋ถ ์งง์ ํ๊ณ
์ด๋ฒ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๋๋ **“๊ดํธ ๊ฐ์๊ฐ ๊ฐ์ผ๋ฉด ๋๋ค”**๋ ์ชฝ์ ๋จผ์ ์์ ์ด ๊ฐ๋ค.
๊ฒ์ผ๋ก ๋ณด๊ธฐ์ ๋ง๋ ์ ๊ทผ์ฒ๋ผ ๋ณด์์ง๋ง, ์ค์ ๋ก๋ ๋ฌธ์ ์ ๋ณธ์ง์ ์ ๋ฐ๋ง ๋ณธ ์
์ด์๋ค.
ํนํ score === 0 ๋ง ํ์ธํ๊ณ ๋๋ธ ๊ฒ์,
๋ฌธ์ ๋ฅผ ๊ฒฐ๊ณผ ์ค์ฌ์ผ๋ก๋ง ๋ณด๊ณ ๊ณผ์ ๊ฒ์ฆ์ ๋์น ๊ฒ์ด์๋ค.
์ด ๋ฌธ์ ๋ฅผ ํตํด ๋ค์ ๋๋ ์ ์:
- ์ฝ๋ฉํ ์คํธ์์๋ ์ต์ข ๊ฒฐ๊ณผ๋ง ๋ง๋์ง๊ฐ ์๋๋ผ
- ์ค๊ฐ ๊ณผ์ ์์ ๊นจ์ง๋ ์กฐ๊ฑด์ด ์๋์ง๋ฅผ ๊ฐ์ด ๋ด์ผ ํ๋ค๋ ๊ฒ
์ด๋ค.
์์ผ๋ก ๋น์ทํ ๋ฌธ์ ๋ฅผ ํ ๋๋
“๋ง์ง๋ง ์ํ๋ง ๋ณด๋ฉด ๋๋๊ฐ?”
์๋๋ฉด
“์ค๊ฐ ๊ณผ์ ์์๋ ํญ์ ๋ง์กฑํด์ผ ํ๋ ์กฐ๊ฑด์ด ์๋๊ฐ?”
๋ฅผ ๋จผ์ ์ฒดํฌํด์ผ๊ฒ ๋ค.
์งง์ ๋ฌธ์ ์์ง๋ง, ๊ตฌํ ๋ฌธ์ ๋ฅผ ๋ณผ ๋์ ์์ผ๋ฅผ ๋ค์ ์ก์์ค ์ข์ ๋ฌธ์ ์๋ค.