# [Algorithm/JS] ๋ฐฑ์ค€ 2581๋ฒˆ ์†Œ์ˆ˜

๐Ÿ”— ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ (opens new window)

# Question

์ž์—ฐ์ˆ˜ M๊ณผ N์ด ์ฃผ์–ด์งˆ ๋•Œ M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒƒ์„ ๋ชจ๋‘ ๊ณจ๋ผ ์ด๋“ค ์†Œ์ˆ˜์˜ ํ•ฉ๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์˜ˆ๋ฅผ ๋“ค์–ด M=60, N=100์ธ ๊ฒฝ์šฐ 60์ด์ƒ 100์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๋Š” 61, 67, 71, 73, 79, 83, 89, 97 ์ด 8๊ฐœ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋“ค ์†Œ์ˆ˜์˜ ํ•ฉ์€ 620์ด๊ณ , ์ตœ์†Ÿ๊ฐ’์€ 61์ด ๋œ๋‹ค.

# Input

์ž…๋ ฅ์˜ ์ฒซ์งธ ์ค„์— M์ด, ๋‘˜์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค.

M๊ณผ N์€ 10,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋ฉฐ, M์€ N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

# Output

M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒƒ์„ ๋ชจ๋‘ ์ฐพ์•„ ์ฒซ์งธ ์ค„์— ๊ทธ ํ•ฉ์„, ๋‘˜์งธ ์ค„์— ๊ทธ ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๋‹จ, M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๊ฐ€ ์—†์„ ๊ฒฝ์šฐ๋Š” ์ฒซ์งธ ์ค„์— -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

# Example

# Input 1

60
100
1
2

# Output 1

620
61
1
2

# Input 2

64
65
1
2

# Output 2

-1
1

์ด ์™ธ์˜ ์ž…์ถœ๋ ฅ์€ ์ƒ๋‹จ์˜ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ๋งํฌ์—์„œ ํ™•์ธ

# Solution

const [M, N] = require('fs')
  .readFileSync('../input.txt')
  .toString()
  .trim()
  .split('\n')
  .map(Number);
const decimals = []; // 1
let sum = 0; // 2
for (let i = M; i <= N; i++) {
  // 3
  let decimal = true; // 4
  if (i === 1) continue; // 9
  for (let j = 2; j < i; j++) {
    // 5
    if (i % j === 0) decimal = false;
  }
  if (decimal) {
    // 6
    decimals.push(i);
    sum += i;
  }
}
if (!decimals[0]) console.log(-1);
// 7
else {
  // 8
  console.log(sum);
  console.log(decimals[0]);
}
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

์ž…๋ ฅ๊ฐ’์€ ํฐ์ˆ˜ M ์€ 60, ์ž‘์€ ์ˆ˜๋Š” N ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

M = 60
N = 100

  1. decimals ๋ณ€์ˆ˜๋Š” ์ž…๋ ฅ๊ฐ’ ๋ฒ”์œ„ ๋‚ด ์†Œ์ˆ˜๋งŒ์„ ๋‹ด์„ ๋ฐฐ์—ด ๋ณ€์ˆ˜

    60 ~ 100 ๋ฒ”์œ„ ๋‚ด ์†Œ์ˆ˜๋Š” 61, 67, 71, 73, 79, 83, 89, 97

  2. sum ๋ณ€์ˆ˜๋Š” ๋ฒ”์œ„ ๋‚ด ์†Œ์ˆ˜๋“ค์„ ํ•ฉํ•œ ๊ฐ’์„ ํ• ๋‹นํ•  ๋ณ€์ˆ˜

  3. ๋ฒ”์œ„ ๋‚ด ์ˆซ์ž๋“ค(60~100)๋งŒํผ ๋ฐ˜๋ณต๋ฌธ ์‹คํ–‰

  4. decimal ๋ณ€์ˆ˜๋Š” ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•œ๋‹ค. ์†Œ์ˆ˜๋ผ๋ฉด true, ์•„๋‹ˆ๋ผ๋ฉด false

  5. 1์€ ๋ฌด์กฐ๊ฑด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— 2๋ถ€ํ„ฐ ํ•ด๋‹น ์ˆซ์ž - 1 ๋งŒํผ ๋ฐ˜๋ณต๋ฌธ ์‹คํ–‰ํ•˜์—ฌ j ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๋ผ๋ฉด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— decimal ์— false ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

  6. ๋งŒ์•ฝ ์†Œ์ˆ˜๋ผ๋ฉด decimals ๋ฐฐ์—ด์— push ํ•˜๊ณ , sum ์— ๋”ํ•ด์ค€๋‹ค.

  7. decimals ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ๋‹ค๋ฉด -1 ์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋น„์–ด์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์†Œ์ˆ˜๊ฐ€ ์—†๋‹ค๋Š” ๋œป์ด๋‹ค.

  8. ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด, ์†Œ์ˆ˜์˜ ์ด ํ•ฉ๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

  9. ์—ฌ๊ธฐ์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ!! ์˜ˆ์˜์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค. ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์•ˆํ•ด์„œ ๊ณ„์† ์˜ค๋‹ต์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค. 1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋ฒ”์œ„๋‚ด์— 1์ด ์žˆ์„ ๊ฒฝ์šฐ ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ˆซ์ž๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค.

Last Updated: 2022. 6. 5. ์˜คํ›„ 3:42:39