# [Algorithm/JS] ๋ฐฑ์ค 8958๋ฒ OXํด์ฆ
๐ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ (opens new window)
# Question
"OOXXOXXOOO"์ ๊ฐ์ OXํด์ฆ์ ๊ฒฐ๊ณผ๊ฐ ์๋ค. O๋ ๋ฌธ์ ๋ฅผ ๋ง์ ๊ฒ์ด๊ณ , X๋ ๋ฌธ์ ๋ฅผ ํ๋ฆฐ ๊ฒ์ด๋ค. ๋ฌธ์ ๋ฅผ ๋ง์ ๊ฒฝ์ฐ ๊ทธ ๋ฌธ์ ์ ์ ์๋ ๊ทธ ๋ฌธ์ ๊น์ง ์ฐ์๋ O์ ๊ฐ์๊ฐ ๋๋ค. ์๋ฅผ ๋ค์ด, 10๋ฒ ๋ฌธ์ ์ ์ ์๋ 3์ด ๋๋ค.
"OOXXOXXOOO"์ ์ ์๋ 1+2+0+0+1+0+0+1+2+3 = 10์ ์ด๋ค.
OXํด์ฆ์ ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ก์ ๋, ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
# Input
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๊ธธ์ด๊ฐ 0๋ณด๋ค ํฌ๊ณ 80๋ณด๋ค ์์ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๋ฌธ์์ด์ O์ X๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
# Output
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
# Example
# Input
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
2
3
4
5
6
# Output
10
9
7
55
30
2
3
4
5
# Solution
const [count, ...input] = require('fs').readFileSync('dev/stdin').toString().split('\n');
input.map((grade) => {
let init = 0;
let result = 0;
grade.split('').map((q) => {
q === 'O' ? init++ : (init = 0);
result += init;
});
console.log(result);
});
2
3
4
5
6
7
8
9
10
์
๋ ฅ ๊ฐ์ ์ฒซ ์ค์ ์ผ์ด์ค์ ์๋ผ๊ณ ํ๋ค. ๋๋ฌธ์, ์ฒซ ์ค์ ์ ์ธํ๊ณ input ์ ๋ฐ์์ค๊ธฐ ์ํด ๊ตฌ์กฐ๋ถํด ํ ๋น์ ํตํด count
(์ผ์ด์ค์ ์) ์ ๋๋จธ์ง input์ ๋ฐฐ์ด๋ก ๋ฐ์์๋ค.
console.log(count); // 5
consloe.log(input);
/*
[ 'OOXXOXXOOO',
'OOXXOOXXOO',
'OXOXOXOXOXOXOX',
'OOOOOOOOOO',
'OOOOXOOOOXOOOOX'
] */
2
3
4
5
6
7
8
9
์ด์ค ํฌ๋ฌธ์ ์ฌ์ฉํ๋ ๋์ ๋ ๊ฐ๊ฒฐํ ์ด์ค map ํจ์๋ฅผ ์ฌ์ฉํ๊ณ input
๋ฐฐ์ด์ ๋ ํ๋ฒ split
ํจ์๋ฅผ ์ฌ์ฉํด ๊ฐ ์ฑ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ดํ ํ๋ค! ์ฑ์ ๊ฒฐ๊ณผ๊ฐ O ๋ผ๋ฉด init ๊ฐ์ 1์ฉ ์ฆ๊ฐ, ์๋๋ผ๋ฉด 0์ผ๋ก ์ด๊ธฐํํ์ฌ ๋ํ๊ธฐ ํ ๋น ์ฐ์ฐ์๋ฅผ ํตํด result ๊ฐ์ ๋์ถํ๋ค.