# [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
1
2
3
4
5
6

# Output

10
9
7
55
30
1
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);
});
1
2
3
4
5
6
7
8
9
10

์ž…๋ ฅ ๊ฐ’์˜ ์ฒซ ์ค„์€ ์ผ€์ด์Šค์˜ ์ˆ˜๋ผ๊ณ  ํ–ˆ๋‹ค. ๋•Œ๋ฌธ์—, ์ฒซ ์ค„์„ ์ œ์™ธํ•˜๊ณ  input ์„ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•ด ๊ตฌ์กฐ๋ถ„ํ•ด ํ• ๋‹น์„ ํ†ตํ•ด count(์ผ€์ด์Šค์˜ ์ˆ˜) ์™€ ๋‚˜๋จธ์ง€ input์„ ๋ฐฐ์—ด๋กœ ๋ฐ›์•„์™”๋‹ค.

console.log(count); // 5
consloe.log(input);
/* 
[ 'OOXXOXXOOO',
  'OOXXOOXXOO',
  'OXOXOXOXOXOXOX',
  'OOOOOOOOOO',
  'OOOOXOOOOXOOOOX'
] */
1
2
3
4
5
6
7
8
9

์ด์ค‘ ํฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๋” ๊ฐ„๊ฒฐํ•œ ์ด์ค‘ map ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ  input ๋ฐฐ์—ด์„ ๋˜ ํ•œ๋ฒˆ split ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ ์ฑ„์  ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ดํ™” ํ–ˆ๋‹ค! ์ฑ„์  ๊ฒฐ๊ณผ๊ฐ€ O ๋ผ๋ฉด init ๊ฐ’์„ 1์”ฉ ์ฆ๊ฐ€, ์•„๋‹ˆ๋ผ๋ฉด 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ๋”ํ•˜๊ธฐ ํ• ๋‹น ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด result ๊ฐ’์„ ๋„์ถœํ–ˆ๋‹ค.

Last Updated: 2022. 6. 5. ์˜คํ›„ 3:42:39