์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜

[๋ฐฑ์ค€ 1652] ๋ˆ„์šธ ์ž๋ฆฌ๋ฅผ ์ฐพ์•„๋ผ (Javascript)

์€์ง„ 2021. 8. 3. 13:08

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป๋ฌธ์ œ๋งํฌ

[๋ฐฑ์ค€ 1652] ๋ˆ„์šธ ์ž๋ฆฌ๋ฅผ ์ฐพ์•„๋ผ (Javascript)
๋ฐฑ์ค€


โœ๏ธIdea Sketch

2021-07-17

1. ๋กœ์ง

  • ์—ฐ์† 2์นธ ์ด์ƒ์˜ ๋นˆ ์นธ์ด ์กด์žฌํ•˜๋ฉด ๋ˆ•๋Š”๋‹ค.
  • ๋ˆ„์šธ ๋•Œ๋Š” ๋ฌด์กฐ๊ฑด ๋ชธ์„ ์ญ‰ ๋ป—๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ๋ฒฝ์ด๋‚˜ ์ง์— ๋‹ฟ๋Š”๋‹ค!!

2. ๊ฐ€๋กœ๋กœ ๋ˆ„์šธ ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ

  • ๋ฌธ์ž์—ด์„ X๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ ํ›„, includes()๋กœ ..์ด ์žˆ๋Š”์ง€ ํ™•์ธ
    input[i].split('X').forEach(v => {
      if (v.includes('..')) row++;
    })
  • filter() ์‚ฌ์šฉ
row += input[i].split('X').filter(v => v.includes('..')).length;

3. ์„ธ๋กœ๋กœ ๋ˆ„์šธ ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ

  • .์„ ์นด์šดํŠธ
  • X๊ฐ€ ๋‚˜์˜ค๋ฉด ์ดˆ๊ธฐํ™”

4. 2๊ฐœ ์ด์ƒ์ผ ๋•Œ 1๋ฒˆ๋งŒ ์นด์šดํŠธ ํ•ด์•ผํ•˜๋Š”๋ฐโ€ฆ

  • for๋ฌธ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์นด์šดํŠธํ•˜๊ธฐ (X) --> ์„ธ๋กœ๋กœ ๋ˆ„์šธ ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ ๋งˆ์ง€๋ง‰ ๊ฒฝ์šฐ๋ฅผ ์นด์šดํŠธํ•˜์ง€ ๋ชปํ•จ
  • ์ง ๋˜๋Š” ๋ฒฝ์— ๋‹ฟ์•˜์„ ๋•Œ column +1


โœ๏ธ์†Œ์Šค์ฝ”๋“œ

2021-07-17 ์‹คํŒจ

  • ์›์ธ : 2์นธ ๋นˆ์นธ์ด ์กด์žฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด +1ํ•˜๊ณ  ๋ฐ”๋กœ ๋‹ค์Œ์ฐจ๋ก€๋กœ ๋„˜์–ด๊ฐ
  • But ๋ˆ„์šธ ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ผ ์ˆ˜ ์žˆ์Œ

๋ฐ˜๋ก€
..X..์ผ ๊ฒฝ์šฐ ๋ˆ„์šธ ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ๋Š” 1๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ 2๊ฐœ

function solution(count, input) {
  let row = 0, column = 0; 

  for (let i=0; i<count; i++) {
    if (input[i].includes('..')) row++; 

    for (let j=0; j<count; j++) {
      if (i === 0) continue;
      if (input[i-1][j] === '.' && input[i][j] === '.') {
        column++;
        break;
      }
    }
  }

  return `${row} ${column}`
}


2021-07-17 ํ†ต๊ณผ

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

function solution(count, input) {
  let row = 0, column = 0; 

  for (let i=0; i<count; i++) {
    row += input[i].split('X').filter(v => v.includes('..')).length;

    let columnCount = 0;  // ์„ธ๋กœ๋กœ ์—ฐ์†ํ•˜๋Š” ๋นˆ ์นธ์˜ ์ˆ˜
    for (let j=0; j<count; j++) {
      if (input[j][i] === '.') columnCount++;
      if (input[j][i] === 'X' || j === count - 1) {  // ์ง์ด๋‚˜ ๋ฒฝ์— ๋‹ฟ์•˜์„ ๋•Œ
        if (columnCount >= 2) column++;
        columnCount = 0;
      }
    }
  }

  return `${row} ${column}`
}

console.log(solution(count, input));