๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javscript] [1์ฐจ] ๋น„๋ฐ€์ง€๋„ (17681)

๋ฌธ์ œ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - [1์ฐจ] ๋น„๋ฐ€์ง€๋„

๋น„๋ฐ€์ง€๋„ ๋„ค์˜ค๋Š” ํ‰์†Œ ํ”„๋กœ๋„๊ฐ€ ๋น„์ƒ๊ธˆ์„ ์ˆจ๊ฒจ๋†“๋Š” ์žฅ์†Œ๋ฅผ ์•Œ๋ ค์ค„ ๋น„๋ฐ€์ง€๋„๋ฅผ ์†์— ๋„ฃ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋น„๋ฐ€์ง€๋„๋Š” ์ˆซ์ž๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์–ด ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค

programmers.co.kr

์ ‘๊ทผ ๋ฐฉ๋ฒ•

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„ 
1. ์ฃผ์–ด์ง„ ๋ฐฐ์—ด arr1, arr2์„ 2์ง„์ˆ˜๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.
2. 2์ง„์ˆ˜๋กœ ๋งŒ๋“  ๋ฐฐ์—ด์„ or ์—ฐ์‚ฐ์ž๋กœ 1์ผ๋•Œ "#", 0์ผ๋•Œ " "์œผ๋กœ ์น˜ํ™˜ํ•ด์•ผํ•œ๋‹ค.

์œ„์˜ ์กฐ๊ฑด๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ๋ผ์„œ ํฌ๊ฒŒ ์–ด๋ ค์šด ์ ์€ ์—†์—ˆ๋‹ค.

๋ฐฐ์šด ๋ถ€๋ถ„
num.toString(2).padStart(n, 0);โ€‹
์ˆซ์ž๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ• ๋•Œ ๊ทธ๋ƒฅ toString์„ ์‚ฌ์šฉํ•˜๋ฉด ์›ํ•˜๋Š” ์–‘์‹๋Œ€๋กœ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.
(๋งŒ์•ฝ 3์„ toStringํ•˜๋ฉด 00011์„ ์›ํ•˜์ง€๋งŒ 11๋กœ ์ถœ๋ ฅ๋จ)

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด padStart๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ n์œผ๋กœ ๋งž์ถ”๊ณ  ๋นˆ ๊ณต๊ฐ„์„ 0์œผ๋กœ ์ฑ„์šฐ๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.

parseInt(binaryArr1[i][j]) || parseInt(binaryArr2[i][j]) === 1โ€‹

 

or ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์—์„œ parseInt๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ž์—ด "0", "1"์ด ๋“ค์–ด๊ฐ€์„œ ์ œ๋Œ€๋กœ๋œ ๋น„๊ต๋ฅผ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
parseInt๋กœ ์ •์ˆ˜ํ˜•์œผ๋กœ ๋งŒ๋“ค์–ด ์ค˜์•ผ ํ•œ๋‹ค.

 

function solution(n, arr1, arr2) {
  var answer = [];
  const binaryArr1 = [];
  const binaryArr2 = [];

  arr1.forEach((e) => {
    binaryArr1.push(makeBinary(n, e));
  });

  arr2.forEach((e) => {
    binaryArr2.push(makeBinary(n, e));
  });

  for (let i = 0; i < n; i++) {
    let resultStr = '';
    for (let j = 0; j < n; j++) {
      if (parseInt(binaryArr1[i][j]) || parseInt(binaryArr2[i][j]) === 1) {
        resultStr += '#';
      } else {
        resultStr += ' ';
      }
    }
    answer.push(resultStr);
  }

  return answer;
}

const makeBinary = (n, num) => {
  return num.toString(2).padStart(n, 0);
};

 

 

๋‹ค๋ฅธ ๋ถ„์˜ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ
for (let i = 0; i < n; i++) {
    let row = (arr1[i] | arr2[i]).toString(2); //Bitwise
    row = "0".repeat(n - row.length) + row;
 }โ€‹

2์ง„์ˆ˜ ๋ณ€ํ™˜ ๋ถ€๋ถ„์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์˜€๋‹ค.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_OR_assignment

๋น„ํŠธ or ์—ฐ์‚ฐ์ž.. ๋ถ„๋ช… ์ด์‚ฐ ์ˆ˜ํ•™ ์‹œ๊ฐ„์— ๋ฐฐ์› ๋˜ ๋‚ด์šฉ์ธ๋ฐ ๋‹ค์‹œ ์ƒ๊ธฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

| : ์ •์ˆ˜๋ฅผ bit๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ or ์—ฐ์‚ฐ์„ ํ•œ ๋’ค, ๋‹ค์‹œ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์‹œ toString์„ ํ•˜๋ฉด or ์—ฐ์‚ฐํ•œ bit ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค.