โ.์ค์ ๋ฐฑ์ค ํ์ด์์๋ fs.readFileSync('./test') -> fs.readFileSync('./dev/stdin') ์ด๋ ๊ฒ ๊ณ ์ณ์ ์๊ฐํด์ฃผ์ธ์
์ฒ์ ํ์ด๋ ์์ ํ ์๋ชป ์๊ฐํ๋ค.
๋๊ฐ์ ๊ฐ์๋ง ๋ง์ผ๋ฉด ๋๋ค๊ณ ์๊ฐํด์ ์ ๊ทํํ์์ผ๋ก ์ ์ฑ์ค๋ฝ๊ฒ ์ด์ํ ์ฝ๋๋ฅผ ์จ๋ด๋ ค๊ฐ๋ค..^^
์ฒ์ ํ์ด ( ๋ฐฉํฅ ์์ ์๋ชป )
const fs = require('fs');
let input = (fs.readFileSync('./test') + '').toString().trim().split('.');
input.pop();
input.pop();
console.log(input);
const regL = /\[/g;
const regR = /\[/g;
const regl = /\(/g;
const regr = /\)/g;
const ans = input.map((i) => {
const regLCnt = i.match(regL) ? i.match(regL).length : 0;
const regRCnt = i.match(regR) ? i.match(regR).length : 0;
const reglCnt = i.match(regl) ? i.match(regl).length : 0;
const regrCnt = i.match(regr) ? i.match(regr).length : 0;
console.log(i, 'i', regLCnt, regRCnt, reglCnt, regrCnt);
if (regLCnt === regRCnt && reglCnt === regrCnt) return 'yes';
else return 'no';
});
console.log(ans);
๊ทธ ๋ค์์์ผ ๋ ์๊ฐ์
์คํ์ ๋ง๋ค์ด์ ๋ฃ๋ค ๋บ๋ค ํด์ค์ผ ํ๋๊ตฌ๋ ๋ผ๋๊ฑธ ๋๋
๋ดํ์ด 2 (์ค๋ต)
const fs = require('fs');
let input = (fs.readFileSync('./test') + '').toString().trim().split('.');
input.pop();
input.pop();
const ans = input.map((sentence) => {
const bracketStack = [];
sentence.split('').forEach((word) => {
if (word === '(' || word === '[') {
bracketStack.push(word);
} else if (word === ')') {
if (bracketStack[bracketStack.length - 1] !== '(') return 'no';
else bracketStack.pop();
} else if (word === ']') {
if (bracketStack[bracketStack.length - 1] !== '[') return 'no';
else bracketStack.pop();
}
});
if (bracketStack.length !== 0) return 'no';
return 'yes';
});
ans.forEach((a) => console.log(a));
์ด๋ป๊ฒ๋ ๋ต์ ๋ง๋ค๊ธฐ ์ํ ๋ฐ์ ..?
๋ฌธ์ ์์๋ ๋ง์๋ค๊ณ ์๊ฐํ๋๋ฐ
ํ์ ํ ์กฐ๊ฑด๋ฌธ์์ ๊ฑธ๋ ธ๋ค๊ณ ํ๋จํ๊ณ ํ๋ฌ์ค ์๊ฐ์ด๊ณผ๋ ์์ํ๊ณ ์์๋ค.
๋ด ํ์ด3(์ ๋ต)
const fs = require('fs');
let input = (fs.readFileSync('./test') + '').toString().trim().split('\n');
const open = ['(', '['];
const close = [')', ']'];
let bracketStack;
const ans = [];
input.pop();
input.forEach((sentence) => {
let isBool = false;
bracketStack = [];
for (let i = 0; i < sentence.length; i++) {
if (open.includes(sentence[i])) bracketStack.push(sentence[i]);
else if (close.includes(sentence[i])) {
if (bracketStack.pop() !== open[close.indexOf(sentence[i])]) {
ans.push('no');
isBool = true;
break;
}
}
}
if (!isBool) {
if (bracketStack.length === 0) ans.push('yes');
else ans.push('no');
}
});
console.log(ans.join('\n'));
๋์ฌ๋๋ง๋ค ์กฐ๊ฑด๋ฌธ์ ํตํด ํ์ธํ๋ ๊ฒ์ด ์๋๋ผ.
1. ๊ฐ ๋ฌธ์์ด์ด open์ธ์ง close์ธ์ง ํ์ธ
2. close๋ผ๋ฉด ๋ฐฉ๊ธ๋์จ ๋ฌธ์์ด์ด ')' ์ธ์ง ']'์ธ์ง ํ์ธ (open๊ณผ close์ ์ธ๋ฑ์ค๊ฐ ๊ฐ์์ ์ด์ฉ)
3. 2๋ฒ์ด ํ๋ฆด ๊ฒฝ์ฐ isBool๊ฐ์ผ๋ก ๋๊ฒจ bracket์ด ๋น์ด์๋์ง์ ์ฌ๋ถ๋ก ๋ต ํ์ธ
4. ๋ง์ง๋ง์ผ๋ก for๋ฌธ์ผ๋ก console.log ํ์ง์๊ณ join ( ์ด๊ฑฐ ์๊พธ ๊น๋จน์)
---
๐ฅณ ์ ๋ง ..... ๋ฏธ๋ฌํ๊ฒ ์๊พธ ๋ต์ด ํ๋ฆฐ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋๋ ์๋ก์ด ํจ์ธ์ ์ธ ํํ๋ค์ ๋ฐฐ์ ๋ฐ.
'๐ ์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] JS/ 1157 ๋จ์ด ๊ณต๋ถ (0) | 2021.10.05 |
---|---|
[๋ฐฑ์ค] JS/ 10808 ์ํ๋ฒณ ๊ฐ์ (0) | 2021.09.30 |
[๋ฐฑ์ค] JS/ 10798 ์ธ๋ก์ฝ๊ธฐ (0) | 2021.09.29 |
[๋ฐฑ์ค] JS/ 14561 ํ๋ฌธ (0) | 2021.09.27 |
[๋ฐฑ์ค] node.js ์ ๋ ฌ / 1181 ๋จ์ด์ ๋ ฌ (0) | 2021.05.02 |
๋๊ธ