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

[๋ฐฑ์ค€ 2003] ์ˆ˜๋“ค์˜ ํ•ฉ 2 (Javascript)

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

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

[๋ฐฑ์ค€ 2003] ์ˆ˜๋“ค์˜ ํ•ฉ 2 (Javascript)
๋ฐฑ์ค€


โœ๏ธIdea Sketch

2021-07-19

1. ๋ฌธ์ œ ์ดํ•ด

  • ์—ฐ์†ํ•œ ์ˆ˜๋“ค์˜ ํ•ฉ์ด M์„ ๋„˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ๊ตฌํ•˜๊ธฐ

2. ๋ฐฑ์ค€ javascript ์ž…๋ ฅ๋ฐ›๊ธฐ

const fs = require('fs');
const stdin = (process.platform === 'linux'
  ? fs.readFileSync('/dev/stdin').toString()
  : `10 5
1 2 3 4 2 5 3 1 1 2`
).split('\n');

let [N, M] = stdin[0].split(' ').map(Number);
let input = stdin[1].split(' ').map(Number);

3. ๋กœ์ง

  • left, right ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ
  • sum์ด M๋ณด๋‹ค ์ž‘์œผ๋ฉด sum += input[++right];
  • sum์ด M๋ณด๋‹ค ํฌ๋ฉด sum -= input[left++];
  • sum์ด M๊ณผ ๊ฐ™์œผ๋ฉด cnt++, sum += input[++right];
  • ์–ธ์ œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋‚˜์š” : left < arr.length && right < arr.length
  • left right sum ์ดˆ๊ธฐ๊ฐ’ : 0, 1, input[left] + input[right]


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

2021-07-19 ์‹คํŒจ

๋ฐ˜๋ก€

4 2  // N, M
2 3 1 1

๋ฌธ์ œ์ƒํ™ฉ : ์ฒซ๋ฒˆ์งธ ์›์†Œ 2๊ฐ€ M๊ณผ ์ผ์น˜ํ•˜๋Š”๋ฐ๋„ ๊ฒฝ์šฐ์˜ ์ˆ˜์— ํฌํ•จX
์›์ธ : left, right, sum ์ดˆ๊ธฐ๊ฐ’์ด ์ž˜๋ชป๋จ


const fs = require('fs');
const stdin = (process.platform === 'linux'
  ? fs.readFileSync('/dev/stdin').toString()
  : `4 2
1 3 1 1`
).split('\n');

let [N, M] = stdin[0].split(' ').map(Number);
let input = stdin[1].split(' ').map(Number);

let result = 0;
let left = 0, right = 1;
let sum = input[left] + input[right];

while(left < N && right < N) {
  if (sum === M) {
    result++;
    sum += input[++right];
  }
  else if (sum < M) sum += input[++right];
  else if (sum > M) sum -= input[left++];
}

console.log(result);


2021-07-19 ์„ฑ๊ณต, 136ms

const fs = require('fs');
const stdin = (process.platform === 'linux'
  ? fs.readFileSync('/dev/stdin').toString()
  : `4 2
2 3 1 1`
).split('\n');

let [N, M] = stdin[0].split(' ').map(Number);
let input = stdin[1].split(' ').map(Number);

let result = 0;
let left = 0, right = 0;
let sum = input[left];

while(left < N && right < N) {
  if (sum === M) {
    result++;
    sum += input[++right];
  }
  else if (sum < M) sum += input[++right];
  else if (sum > M) sum -= input[left++];
}

console.log(result);