whatisthis?

๐Ÿ”บ๋ฐฑ์ค€ 2577 javascript (node.js) ํ’€์ด ๋ณธ๋ฌธ

ALGORITHM/BOJ (Node.js)

๐Ÿ”บ๋ฐฑ์ค€ 2577 javascript (node.js) ํ’€์ด

thisisyjin 2022. 1. 4. 10:47

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

 

 


 

๐Ÿ’ก๋ฌธ์ œ

์„ธ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜ A, B, C๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ A × B × C๋ฅผ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ์— 0๋ถ€ํ„ฐ 9๊นŒ์ง€ ๊ฐ๊ฐ์˜ ์ˆซ์ž๊ฐ€ ๋ช‡ ๋ฒˆ์”ฉ ์“ฐ์˜€๋Š”์ง€๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์˜ˆ๋ฅผ ๋“ค์–ด A = 150, B = 266, C = 427 ์ด๋ผ๋ฉด A × B × C = 150 × 266 × 427 = 17037300 ์ด ๋˜๊ณ , ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ 17037300 ์—๋Š” 0์ด 3๋ฒˆ, 1์ด 1๋ฒˆ, 3์ด 2๋ฒˆ, 7์ด 2๋ฒˆ ์“ฐ์˜€๋‹ค.

๐Ÿ“์ž…๋ ฅ

์ฒซ์งธ ์ค„์— A, ๋‘˜์งธ ์ค„์— B, ์…‹์งธ ์ค„์— C๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. A, B, C๋Š” ๋ชจ๋‘ 100๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000๋ณด๋‹ค ์ž‘์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

๐Ÿ“ˆ์ถœ๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” A × B × C์˜ ๊ฒฐ๊ณผ์— 0 ์ด ๋ช‡ ๋ฒˆ ์“ฐ์˜€๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ ์—ด ๋ฒˆ์งธ ์ค„๊นŒ์ง€ A × B × C์˜ ๊ฒฐ๊ณผ์— 1๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ๊ฐ๊ฐ ๋ช‡ ๋ฒˆ ์“ฐ์˜€๋Š”์ง€ ์ฐจ๋ก€๋กœ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ

150
266
427

 

์˜ˆ์ œ ์ถœ๋ ฅ

3
1
0
2
0
0
0
2
0
0

 


< ์ฝ”๋“œ >

let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');

let num = String(input[0] * input[1] * input[2]);

for (let i = 0; i <= 9; i++) {
    let count = 0;
    
    for (let j = 0; j < num.length; j++) {
        if (Number(num[j]) === i) {
            count++;
        }
    }
    
    console.log(count);
}

<KEY POINT>

  • ์šฐ์„  ์„ธ ์ˆ˜๋ฅผ ๊ณฑํ•œ ๋‹ค์Œ, ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ˆซ์ž(0~9)๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด String()์œผ๋กœ ๊ฐ์‹ธ์ค€๋‹ค.
  • ์ค‘๋ณต for loop : โ‘ i=0 ~ i<10๊นŒ์ง€ ์ˆซ์ž(0~9) ๊ฐœ์ˆ˜๋ฅผ ์„ธ๊ธฐ ์œ„ํ•œ ํ‘œ๋ณธ.
  • โ‘ก j=0 ~ j<num.length ๊นŒ์ง€ num์ด๋ผ๋Š” string์˜ ๊ธ€์ž์ˆ˜๋งŒํผ(length) ์ฒซ ๊ธ€์ž๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๊ธ€์ž๊นŒ์ง€ ๋น„๊ต
  • num[j] ์ฆ‰, j๋ฒˆ์งธ ๊ธ€์ž๊ฐ€ i์™€ ์ผ์น˜ํ•˜๋ฉด count++ํ•ด์คŒ.
  • โ—โ—โ—โ— ์ˆซ์ž ํ•˜๋‚˜์— ๋Œ€ํ•œ ์นด์šดํŠธ๊ฐ€ ๋๋‚˜๋ฉด console.log ํ•ด์คŒ. (์ด๋•Œ console.log์˜ ์œ„์น˜ ์ฃผ์˜ํ•˜์ž!)

 

i=0์— ๋Œ€ํ•œ ์นด์šดํŠธ๋ฅผ ์‹œ์ž‘ -> j=0๋ถ€ํ„ฐ j=length-1๊นŒ์ง€ ๋‹ค ์นด์šดํŠธ ํ–ˆ์œผ๋ฉด -> ๋‘๋ฒˆ์งธ for๋ฌธ ๋น ์ ธ๋‚˜์™€ -> console.logํ•˜๊ธฐ

-> ์ด์ œ i=1์— ๋Œ€ํ•œ ์นด์šดํŠธ -> j=0~ length-1๊นŒ์ง€ ์นด์šดํŠธ -> console.log -> ... (๋ฐ˜๋ณต) ...

 

 

 

๐Ÿ’ก ๋‹ค๋ฅธ ์ •๋‹ต

 

- for(let i=0;i<10;i++) ๋กœ ํ•ด๋„ OK

 

 

 

์ฒ˜์Œ์—๋Š” ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•˜๋ ค๊ณ  match(/์ฐพ์„๋ฌธ์ž/g)๋ฅผ ์ด์šฉํ•˜๋ ค ํ–ˆ๋Š”๋ฐ ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. 
์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์ฐพ๋Š” ๋ฌธ์ž์—ด์ด ์ˆซ์ž๋‹ˆ๊นŒ for๋ฃจํ”„๋งŒ์œผ๋กœ๋„ ๊ฒ€์ƒ‰์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๊ตฌ๋‚˜,, ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋‹ค.
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n').map(x => Number(x));

let result = input[0] * input[1] * input[2];

for(let i=0;i<10;i++) {
   let searchIndex = '/' + i + '/g';
   let count = String(result).match(searchIndex);
   console.log(count);
}โ€‹

 

๐Ÿ”บ๐Ÿ”บ ์ฒ˜์Œ์— ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๋ฐฉ์‹์ธ๋ฐ, ์•„์ง String.match์— ๋Œ€ํ•ด์„œ๋Š” ๋” ๋ฐฐ์›Œ์•ผํ• ๋“ฏ.