ํฐ์คํ ๋ฆฌ ๋ทฐ
[์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง ์์ฆ2]๊ดํธ ํ์ ํ๊ธฐ
choi95 2021. 10. 9. 02:10๋ฌธ์
๋ฌธ์ ์ค๋ช
๋ค์ ๊ท์น์ ์งํค๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๊ณ ์ ์ํฉ๋๋ค.
- (), [], {} ๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ง์ฝ A๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, (A), [A], {A} ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, [] ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, ([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ง์ฝ A, B๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, AB ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, {} ์ ([]) ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, {}([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
๋๊ดํธ, ์ค๊ดํธ, ๊ทธ๋ฆฌ๊ณ ์๊ดํธ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด s๋ฅผ ์ผ์ชฝ์ผ๋ก x (0 ≤ x < (s์ ๊ธธ์ด)) ์นธ๋งํผ ํ์ ์์ผฐ์ ๋ s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด ๋๊ฒ ํ๋ x์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- s์ ๊ธธ์ด๋ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
์ ์ถ๋ ฅ ์
sresult
"[](){}" | 3 |
"}]()[{" | 2 |
"[)(]" | 0 |
"}}}" | 0 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ค์ ํ๋ "[](){}" ๋ฅผ ํ์ ์ํจ ๋ชจ์ต์ ๋ํ๋ธ ๊ฒ์ ๋๋ค.
xs๋ฅผ ์ผ์ชฝ์ผ๋ก x์นธ๋งํผ ํ์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด?
0 | "[](){}" | O |
1 | "](){}[" | X |
2 | "(){}[]" | O |
3 | "){}[](" | X |
4 | "{}[]()" | O |
5 | "}[](){" | X |
- ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด ๋๋ x๊ฐ 3๊ฐ์ด๋ฏ๋ก, 3์ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ๋ค์ ํ๋ "}]()[{" ๋ฅผ ํ์ ์ํจ ๋ชจ์ต์ ๋ํ๋ธ ๊ฒ์ ๋๋ค.
xs๋ฅผ ์ผ์ชฝ์ผ๋ก x์นธ๋งํผ ํ์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด?
0 | "}]()[{" | X |
1 | "]()[{}" | X |
2 | "()[{}]" | O |
3 | ")[{}](" | X |
4 | "[{}]()" | O |
5 | "{}]()[" | X |
- ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด ๋๋ x๊ฐ 2๊ฐ์ด๋ฏ๋ก, 2๋ฅผ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
- s๋ฅผ ์ด๋ป๊ฒ ํ์ ํ๋๋ผ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋ง๋ค ์ ์์ผ๋ฏ๋ก, 0์ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #4
- s๋ฅผ ์ด๋ป๊ฒ ํ์ ํ๋๋ผ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋ง๋ค ์ ์์ผ๋ฏ๋ก, 0์ return ํด์ผ ํฉ๋๋ค.
๋ฌธ์ ํ์ด
๊ดํธ์ ํ ์์ ์ฐพ๋๋ค๋ ์ ์ฒด์ ์ธ ๋ก์ง์ ๋น์ทํ๋, ํด๋น ๋ฌธ์ ๋ ๊ดํธ์ ์ข ๋ฃ ๊ฐฏ์๊ฐ ์ด 3๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ข ๋ฅ์ ๊ดํธ๊ฐ ์์ ๋น ์ ธ๋๊ฐ๋์ง์ ๋ํด์ ์๋ณํด์ฃผ์ด์ผ ๋๋ฉฐ ๋น ์ ธ๋๊ฐ ๊ดํธ์ ์์ ์ด๋ฃจ๋ ๋ซ๋ ๊ดํธ์ธ์ง๋ ํ์ธํด ์ฃผ์ด์ผ ํ๋ค.
์ฝ๋
function isCorrect(str) {
let result = true;
let stack = [];
let regExp = /[\[\(\{]/;
for(let x of str) {
if(regExp.test(x)) stack.push(x);
else {
if(stack.length === 0) return false;
let lp = stack[stack.length - 1];
if(lp === '(') { //๊ดํธ์ ์ข
๋ฅ์ ๋ฐ๋ฅธ ๋ถ๊ธฐ ์ฒ๋ฆฌ(์์คํค์ฝ๋ ๊ฐ์ ์ฌ์ฉ)
if(lp.charCodeAt() + 1 === x.charCodeAt()) stack.pop();
}
else {
if(lp.charCodeAt() + 2 === x.charCodeAt()) stack.pop();
}
}
}
if(stack.length > 0) return false;
return result;
}
function solution(s) {
var answer = 0;
for(let i = 0; i < s.length; i++) { //๋ฌธ์์ด์ ๊ธธ์ด๋งํผ ํ์ ํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด์ ์ด ๊ธธ์ด๋งํผ ์ํ
let stack = s.split('');
let index = i; //ํ์ ์
while(index) {
stack.push(stack.shift());
index--;
}
if(isCorrect(stack.join(''))) answer++;
}
return answer;
}
๊ฐ์ ์
๊ดํธ์ ํ ์์ด ๋๋์ง ํ์ธํ๊ธฐ ์ํด์ charCodeAt()์ ์ฌ์ฉํ ์ฐ์ฐ ๊ณผ์ ์ ๊ฑฐ์ณค๋ค.
์ ํ์ฑ ํ ์คํธ๋ ๋ชจ๋ ํต๊ณผํ์์ง๋ง ์ํ ์๊ฐ์ด ํ๊ท 100ms๋ฅผ ๋์ ์ ๋๋ก ์๊ฐ ๋ณต์ก๋ ์ ๋งค์ฐ ๋นํจ์จ์ ์ธ ์ฝ๋์์ ํ์ธํ์๋ค.์๋ง charCodeAt() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ณผ์ ์์ ์ฐ์ฐ ์ํ ๊ณผ์ ์ด ๊ธธ์ด์ง ๊ฒ ๊ฐ์๋ฐ, ์ด์ ๊ด๋ จํด์ ํฅํ ๊ฐ์ ํ ๋ก์ง์ ์ง ๋ด์ผ๊ฒ ๋ค.
'์๊ณ ๋ฆฌ์ฆ > ๊ธฐ์ถ ๋ฐ ๋ฐฑ์ค ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค_์ํด๋ฆฌ ์ฑ๋ฆฐ์ง 6์ฃผ์ฐจ] ๋ณต์ ์ ๋ ฌํ๊ธฐ (0) | 2021.10.16 |
---|---|
[2018 KAKAO BLIND RECRUITMENT 1์ฐจ]๋ด์ค ํด๋ฌ์คํฐ๋ง_JS Set๊ณผ Map ๊ฐ์ฒด์ ํ์ฉ (0) | 2021.10.11 |
[2020 KAKAO BLIND RECRUITMENT]๋ฌธ์์ด ์์ถ_์ ๊ท ํํ์์ ๋ณ์ ํ ๋น (0) | 2021.09.02 |
[2018 KAKAO BLIND RECRUITMENT]๋น๋ฐ์ง๋ (0) | 2021.09.01 |
[๋ฐฑ์ค 1874๋ฒ]์คํ ์์ด (0) | 2021.08.27 |