Notice
Recent Posts
Recent Comments
Link
ยซ   2024/06   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Lennon FE

[๋ฐฑ์ค€ 3085๋ฒˆ] ์‚ฌํƒ•๊ฒŒ์ž„ - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(nodejs) ๋ณธ๋ฌธ

๐Ÿ”ฅ Algorithm/Baekjoon

[๋ฐฑ์ค€ 3085๋ฒˆ] ์‚ฌํƒ•๊ฒŒ์ž„ - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(nodejs)

Lennon 2022. 2. 6. 20:26
728x90
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/3085

 

3085๋ฒˆ: ์‚ฌํƒ• ๊ฒŒ์ž„

์˜ˆ์ œ 3์˜ ๊ฒฝ์šฐ 4๋ฒˆ ํ–‰์˜ Y์™€ C๋ฅผ ๋ฐ”๊พธ๋ฉด ์‚ฌํƒ• ๋„ค ๊ฐœ๋ฅผ ๋จน์„ ์ˆ˜ ์žˆ๋‹ค.

www.acmicpc.net

const fs = require('fs');
let [len, ...input] = fs
  .readFileSync('dev/stdin')
  .toString()
  .trim()
  .split('\n')
  .map((v) => v.split(''));
len = +len.join('');
let MAX = eatCandyCount(input);

for (let i = 0; i < len; i++) {
  for (let j = 0; j < len - 1; j++) {
    if (input[i][j] !== input[i][j + 1]) {
      [input[i][j], input[i][j + 1]] = [input[i][j + 1], input[i][j]];
      MAX = Math.max(MAX, eatCandyCount(input));
      [input[i][j + 1], input[i][j]] = [input[i][j], input[i][j + 1]];
    }
  }
} // ์ขŒ์šฐ ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ๊ฐ’ ๋ฐ”๊ฟ”์ฃผ๊ณ  ์บ”๋”” ๊ฐœ์ˆ˜ ์„ธ๊ณ  ๋‹ค์‹œ ๋ณธ๋ž˜์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ

for (let i = 0; i < len - 1; i++) {
  for (let j = 0; j < len; j++) {
    if (input[i][j] !== input[i + 1][j]) {
      [input[i][j], input[i + 1][j]] = [input[i + 1][j], input[i][j]];
      MAX = Math.max(MAX, eatCandyCount(input));
      [input[i + 1][j], input[i][j]] = [input[i][j], input[i + 1][j]];
    }
  }
} // ์ƒํ•˜ ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ๊ฐ’ ๋ฐ”๊ฟ”์ฃผ๊ณ  ์บ”๋””์„ธ๊ณ  ๋‹ค์‹œ ๋ณธ๋ž˜์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ

console.log(MAX); // ์ตœ๋Œ€๊ฐ’ ์ถœ๋ ฅ

function eatCandyCount(arr) {
  let MAX = 0;

  for (let i = 0; i < len; i++) {
    let count = 0;
    let value = arr[i][0];
    for (let j = 0; j < len; j++) {
      if (arr[i][j] === value) {
        count++;
      } else {
        MAX = Math.max(MAX, count);
        count = 1;
        value = arr[i][j];
      }
      if (j === len - 1) MAX = Math.max(MAX, count);
    }
  } // ํ–‰์œผ๋กœ ๋Œ๋ฉด์„œ ์—ฐ์†๋œ ๊ฐ™์€ ์‚ฌํƒ• ๊ฐœ์ˆ˜ ์„ธ๊ธฐ

  for (let i = 0; i < len; i++) {
    let count = 0;
    let value = arr[0][i];
    for (let j = 0; j < len; j++) {
      if (arr[j][i] === value) {
        count++;
      } else {
        MAX = Math.max(MAX, count);
        count = 1;
        value = arr[j][i];
      }
      if (j === len - 1) MAX = Math.max(MAX, count);
    }
  } // ์—ด๋กœ ๋Œ๋ฉด์„œ ์—ฐ์†๋œ ๊ฐ™์€ ์‚ฌํƒ• ๊ฐœ์ˆ˜ ์„ธ๊ธฐ

  return MAX; // ๊ฐ€์žฅ ํฐ ๊ฐ’ return
}

์ขŒ์šฐ ์‚ฌํƒ• ์ƒ‰์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜, ์ƒํ•˜ ์‚ฌํƒ• ์ƒ‰์ด ๋‹ค๋ฅด๋ฉด ๋‘ ๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๊ณ 

[input[i][j], input[i][j + 1]] = [input[i][j + 1], input[i][j]];

eatCandyCount ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๊ณ  ๋‹ค์‹œ ๋ณธ๋ž˜ ๋ฐฐ์—ด๋Œ€๋กœ ๋‘ ๊ฐ’์„ ๋ฐ”๊ฟ”์ค€๋‹ค.

[input[i][j + 1], input[i][j]] = [input[i][j], input[i][j + 1]];

๋๊นŒ์ง€ ์ˆœํšŒํ•˜์—ฌ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋ฉด ๋!

 

 

์ฒ˜์Œ์— ๋ฐฐ์—ด์—๋‹ค๊ฐ€ ๊ฐ’์„ ๋„ฃ๊ณ  ํ›„์— Math.max ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ํ˜ธ์ถœํ–ˆ์ง€๋งŒ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ๊ทธ๋ƒฅ ์ฒ˜์Œ๋ถ€ํ„ฐ Max๊ฐ’์„ ์ˆ˜์ •ํ•ด๊ฐ€๋ฉฐ ๋‚˜์ค‘์— ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฒŒ ์‹œ๊ฐ„๋ณต์žก๋„, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํšจ์œจ์ ์ด๋‹ค. 

 

์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์‹œ๊ฐ„์—์„œ ํ›จ์”ฌ ์œ ์šฉํ•œ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
Comments