whatisthis?

โŒโŒ๋ฐฑ์ค€ 8958 javascript (node.js) ํ’€์ด ๋ณธ๋ฌธ

ALGORITHM/BOJ (Node.js)

โŒโŒ๋ฐฑ์ค€ 8958 javascript (node.js) ํ’€์ด

thisisyjin 2022. 1. 4. 12:55

1์ฐจ์› ๋ฐฐ์—ด - (6)

 

 


 

๐Ÿ’ก๋ฌธ์ œ

"OOXXOXXOOO"์™€ ๊ฐ™์€ OXํ€ด์ฆˆ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ๋‹ค. O๋Š” ๋ฌธ์ œ๋ฅผ ๋งž์€ ๊ฒƒ์ด๊ณ , X๋Š” ๋ฌธ์ œ๋ฅผ ํ‹€๋ฆฐ ๊ฒƒ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ๋งž์€ ๊ฒฝ์šฐ ๊ทธ ๋ฌธ์ œ์˜ ์ ์ˆ˜๋Š” ๊ทธ ๋ฌธ์ œ๊นŒ์ง€ ์—ฐ์†๋œ O์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 10๋ฒˆ ๋ฌธ์ œ์˜ ์ ์ˆ˜๋Š” 3์ด ๋œ๋‹ค.

"OOXXOXXOOO"์˜ ์ ์ˆ˜๋Š” 1+2+0+0+1+0+0+1+2+3 = 10์ ์ด๋‹ค.

OXํ€ด์ฆˆ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๐Ÿ“์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ธธ์ด๊ฐ€ 0๋ณด๋‹ค ํฌ๊ณ  80๋ณด๋‹ค ์ž‘์€ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฌธ์ž์—ด์€ O์™€ X๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

๐Ÿ“ˆ์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ์ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ

5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX

 

์˜ˆ์ œ ์ถœ๋ ฅ

10
9
7
55
30

 

 

 


< ์ฝ”๋“œ >

 

let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let T = Number(input[0]);

for(let i=1;i<=T;i++) {
   let count = 0;
   let score = 0;
   let str = input[i];
   let len = input[i].length;

   for(let j=0; j<len; j++) {
      if(str[j] == 'O') {
         count++;
      } else{
         count = 0;
      }

      score += count;
   }
   console.log(score);
}

<KEY POINT>

 

  • input[0]์ด ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜์ด๋ฏ€๋กœ ๋ณ€์ˆ˜ T๋กœ ์ €์žฅํ•œ๋‹ค.
  • ์ฒซ๋ฒˆ์งธ for loop๋Š” ๋ณ€์ˆ˜ i(์ผ€์ด์Šค ํ•˜๋‚˜์”ฉ ์ง„ํ–‰)
  • ๋‘๋ฒˆ์งธ for loop๋Š” ํ•ด๋‹น ์ผ€์ด์Šค ๋‚ด์˜ ๊ธ€์ž์ˆ˜(length)๋งŒํผ ์ง„ํ–‰
  • if-else ๋ฌธ์œผ๋กœ O์˜ ๊ฐœ์ˆ˜๋งŒํผ count++ํ•˜๊ณ  / X๊ฐ€ ๋‚˜์˜ค๋ฉด count = 0์œผ๋กœ ๋ฆฌ์…‹
  • score = score + count ํ•˜๊ธฐ / if๋งŒ์กฑํ•˜๋ฉด count + 1 -> ๋น ์ ธ๋‚˜๊ฐ€์„œ score+= count 
  • ๊ฐ ์ผ€์ด์Šค๊ฐ€ ๋๋‚  ๋•Œ ๋งˆ๋‹ค console.log(score) << ์œ„์น˜ ์ฃผ์˜ โ—โ—

 


์ดํ•ด๋ฅผ ์œ„ํ•œ Pseudo Code **

- if-else๋ฌธ์—์„œ ๋Œ€์ž…ํ•œ ๊ฒƒ์„ ์‚ดํŽด๋ณด์ž. 

 

 

 

let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let T = Number(input[0]);

for(let i=1;i<=T;i++) {
   let count = 0;
   let score = 0;
   let str = input[i];
   let len = input[i].length;

   for(let j=0; j<len; j++) {
      if(str[j] == 'O') {
         count++;
      } else{
         count = 0;
      }

      score += count;
   }
   console.log(score);
}

 

str[j]๋Š” str์˜ j๋ฒˆ์งธ ๊ธ€์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

len์€ str์˜ ๊ธธ์ด์ด๋ฏ€๋กœ j=0๋ถ€ํ„ฐ j<len๊นŒ์ง€ ์ฒซ๋ฒˆ์งธ ๊ธ€์ž๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๊ธ€์ž๊นŒ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.

 

 

str = ' OOXXX ' ๋ผ๊ณ  ์น˜์ž. len=5์ด๋ฏ€๋กœ j=0๋ถ€ํ„ฐ j=4๊นŒ์ง€ ๊ฒ€์‚ฌํ•˜๋ฉด ๋œ๋‹ค.

 

if-else๋ฌธ์—์„œ

if(str[0] == 'O') ๋ฅผ ๋งŒ์กฑํ•˜๋ฏ€๋กœ count++๊ฐ€ ๋˜์–ด count = 1์ด ๋œ๋‹ค.

if๋ฌธ์„ ๋น ์ ธ๋‚˜์™€ score = 1์ด ๋˜๊ณ ,

j++๊ฐ€ ๋˜์–ด if(str[1] == 'O')๋ฅผ ๋งŒ์กฑํ•˜๊ณ , ๋‹ค์‹œ count++๊ฐ€ ๋˜์–ด count = 2๋กœ ๋ˆ„์ ๋œ๋‹ค.

if๋ฌธ์„ ๋น ์ ธ๋‚˜์™€ score = 1 + ( 2 ) = 3์ด ๋˜๊ณ ,

j++๊ฐ€ ๋˜์–ด if(str[2] == 'O')๋ฅผ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ else ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. count = 0์œผ๋กœ ์ดˆ๊ธฐํ™” ๋˜๋ฏ€๋กœ

else๋ฌธ์„ ๋น ์ ธ๋‚˜์™€ score = 3 + 0 = 3์ด ๋œ๋‹ค.

 

์ด๋Ÿฐ์‹์œผ๋กœ score์ด ๋ˆ„์ ๋˜๊ณ , X์˜ ๊ฒฝ์šฐ์— 0์œผ๋กœ ์ดˆ๊ธฐํ™”์‹œํ‚ค๋Š” ์›๋ฆฌ๋ฅผ ์ด์šฉํ•œ ๊ฒƒ์ด๋‹ค.

 

 

score += count์™€

console.log(score)์˜ ์œ„์น˜๋ฅผ ์ฃผ์˜ํ•˜์ž.