# [Algorithm/JS] ๋ฐฑ์ค€ 13305๋ฒˆ ์ „์ž๋ ˆ์ธ์ง€

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

# Question

์„œ๋กœ ๋‹ค๋ฅธ N๊ฐœ์˜ ์ž์—ฐ์ˆ˜์˜ ํ•ฉ์ด S๋ผ๊ณ  ํ•œ๋‹ค. S๋ฅผ ์•Œ ๋•Œ, ์ž์—ฐ์ˆ˜ N์˜ ์ตœ๋Œ“๊ฐ’์€ ์–ผ๋งˆ์ผ๊นŒ?

์–ด๋–ค ๋‚˜๋ผ์— N๊ฐœ์˜ ๋„์‹œ๊ฐ€ ์žˆ๋‹ค. ์ด ๋„์‹œ๋“ค์€ ์ผ์ง์„  ๋„๋กœ ์œ„์— ์žˆ๋‹ค. ํŽธ์˜์ƒ ์ผ์ง์„ ์„ ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์œผ๋กœ ๋‘์ž. ์ œ์ผ ์™ผ์ชฝ์˜ ๋„์‹œ์—์„œ ์ œ์ผ ์˜ค๋ฅธ์ชฝ์˜ ๋„์‹œ๋กœ ์ž๋™์ฐจ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋™ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ธ์ ‘ํ•œ ๋‘ ๋„์‹œ ์‚ฌ์ด์˜ ๋„๋กœ๋“ค์€ ์„œ๋กœ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๋„๋กœ ๊ธธ์ด์˜ ๋‹จ์œ„๋Š” km๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ฒ˜์Œ ์ถœ๋ฐœํ•  ๋•Œ ์ž๋™์ฐจ์—๋Š” ๊ธฐ๋ฆ„์ด ์—†์–ด์„œ ์ฃผ์œ ์†Œ์—์„œ ๊ธฐ๋ฆ„์„ ๋„ฃ๊ณ  ์ถœ๋ฐœํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ๊ธฐ๋ฆ„ํ†ต์˜ ํฌ๊ธฐ๋Š” ๋ฌด์ œํ•œ์ด์–ด์„œ ์–ผ๋งˆ๋“ ์ง€ ๋งŽ์€ ๊ธฐ๋ฆ„์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. ๋„๋กœ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋™ํ•  ๋•Œ 1km๋งˆ๋‹ค 1๋ฆฌํ„ฐ์˜ ๊ธฐ๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ ๋„์‹œ์—๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ฃผ์œ ์†Œ๊ฐ€ ์žˆ์œผ๋ฉฐ, ๋„์‹œ ๋งˆ๋‹ค ์ฃผ์œ ์†Œ์˜ ๋ฆฌํ„ฐ๋‹น ๊ฐ€๊ฒฉ์€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€๊ฒฉ์˜ ๋‹จ์œ„๋Š” ์›์„ ์‚ฌ์šฉํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ด ๋‚˜๋ผ์— ๋‹ค์Œ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ 4๊ฐœ์˜ ๋„์‹œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์› ์•ˆ์— ์žˆ๋Š” ์ˆซ์ž๋Š” ๊ทธ ๋„์‹œ์— ์žˆ๋Š” ์ฃผ์œ ์†Œ์˜ ๋ฆฌํ„ฐ๋‹น ๊ฐ€๊ฒฉ์ด๋‹ค. ๋„๋กœ ์œ„์— ์žˆ๋Š” ์ˆซ์ž๋Š” ๋„๋กœ์˜ ๊ธธ์ด๋ฅผ ํ‘œ์‹œํ•œ ๊ฒƒ์ด๋‹ค.

์ œ์ผ ์™ผ์ชฝ ๋„์‹œ์—์„œ 6๋ฆฌํ„ฐ์˜ ๊ธฐ๋ฆ„์„ ๋„ฃ๊ณ , ๋” ์ด์ƒ์˜ ์ฃผ์œ  ์—†์ด ์ œ์ผ ์˜ค๋ฅธ์ชฝ ๋„์‹œ๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด ์ด ๋น„์šฉ์€ 30์›์ด๋‹ค. ๋งŒ์•ฝ ์ œ์ผ ์™ผ์ชฝ ๋„์‹œ์—์„œ 2๋ฆฌํ„ฐ์˜ ๊ธฐ๋ฆ„์„ ๋„ฃ๊ณ (2ร—5 = 10์›) ๋‹ค์Œ ๋ฒˆ ๋„์‹œ๊นŒ์ง€ ์ด๋™ํ•œ ํ›„ 3๋ฆฌํ„ฐ์˜ ๊ธฐ๋ฆ„์„ ๋„ฃ๊ณ (3ร—2 = 6์›) ๋‹ค์Œ ๋„์‹œ์—์„œ 1๋ฆฌํ„ฐ์˜ ๊ธฐ๋ฆ„์„ ๋„ฃ์–ด(1ร—4 = 4์›) ์ œ์ผ ์˜ค๋ฅธ์ชฝ ๋„์‹œ๋กœ ์ด๋™ํ•˜๋ฉด, ์ด ๋น„์šฉ์€ 20์›์ด๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ œ์ผ ์™ผ์ชฝ ๋„์‹œ์—์„œ 2๋ฆฌํ„ฐ์˜ ๊ธฐ๋ฆ„์„ ๋„ฃ๊ณ (2ร—5 = 10์›) ๋‹ค์Œ ๋ฒˆ ๋„์‹œ๊นŒ์ง€ ์ด๋™ํ•œ ํ›„ 4๋ฆฌํ„ฐ์˜ ๊ธฐ๋ฆ„์„ ๋„ฃ๊ณ (4ร—2 = 8์›) ์ œ์ผ ์˜ค๋ฅธ์ชฝ ๋„์‹œ๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด, ์ด ๋น„์šฉ์€ 18์›์ด๋‹ค.

๊ฐ ๋„์‹œ์— ์žˆ๋Š” ์ฃผ์œ ์†Œ์˜ ๊ธฐ๋ฆ„ ๊ฐ€๊ฒฉ๊ณผ, ๊ฐ ๋„์‹œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋„๋กœ์˜ ๊ธธ์ด๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ์ œ์ผ ์™ผ์ชฝ ๋„์‹œ์—์„œ ์ œ์ผ ์˜ค๋ฅธ์ชฝ ๋„์‹œ๋กœ ์ด๋™ํ•˜๋Š” ์ตœ์†Œ์˜ ๋น„์šฉ์„ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

# Input

ํ‘œ์ค€ ์ž…๋ ฅ์œผ๋กœ ๋‹ค์Œ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๋„์‹œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ N(2 โ‰ค N โ‰ค 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” ์ธ์ ‘ํ•œ ๋‘ ๋„์‹œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋„๋กœ์˜ ๊ธธ์ด๊ฐ€ ์ œ์ผ ์™ผ์ชฝ ๋„๋กœ๋ถ€ํ„ฐ N-1๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” ์ฃผ์œ ์†Œ์˜ ๋ฆฌํ„ฐ๋‹น ๊ฐ€๊ฒฉ์ด ์ œ์ผ ์™ผ์ชฝ ๋„์‹œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ N๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ œ์ผ ์™ผ์ชฝ ๋„์‹œ๋ถ€ํ„ฐ ์ œ์ผ ์˜ค๋ฅธ์ชฝ ๋„์‹œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋Š” 1์ด์ƒ 1,000,000,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋ฆฌํ„ฐ๋‹น ๊ฐ€๊ฒฉ์€ 1 ์ด์ƒ 1,000,000,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.

# Output

ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ์ œ์ผ ์™ผ์ชฝ ๋„์‹œ์—์„œ ์ œ์ผ ์˜ค๋ฅธ์ชฝ ๋„์‹œ๋กœ ๊ฐ€๋Š” ์ตœ์†Œ ๋น„์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

# Sub task

๋ฒˆํ˜ธ ๋ฐฐ์  ์ œํ•œ
1 17 ๋ชจ๋“  ์ฃผ์œ ์†Œ์˜ ๋ฆฌํ„ฐ๋‹น ๊ฐ€๊ฒฉ์€ 1์›์ด๋‹ค.
2 41 2 โ‰ค N โ‰ค 1,000, ์ œ์ผ ์™ผ์ชฝ ๋„์‹œ๋ถ€ํ„ฐ ์ œ์ผ ์˜ค๋ฅธ์ชฝ ๋„์‹œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋Š” ์ตœ๋Œ€ 10,000, ๋ฆฌํ„ฐ ๋‹น ๊ฐ€๊ฒฉ์€ ์ตœ๋Œ€ 10,000์ด๋‹ค.
3 42 ์›๋ž˜์˜ ์ œ์•ฝ์กฐ๊ฑด ์ด์™ธ์— ์•„๋ฌด ์ œ์•ฝ์กฐ๊ฑด์ด ์—†๋‹ค.

# Example

# Input 1

4
2 3 1
5 2 4 1
1
2
3

# Output 1

18
1

# Input 2

4
3 3 4
1 1 1 1
1
2
3

# Output 2

10
1

# Solution

์•Œ๊ณ ๋ฆฌ์ฆ˜: ๊ทธ๋ฆฌ๋””

์ด ๋ฌธ์ œ๋Š” ๋‹ค์Œ ๋„์‹œ์—์„œ์˜ ์ฃผ์œ  ๊ฐ€๊ฒฉ์ด ํ˜„์žฌ ๋„์‹œ์˜ ๊ฐ€๊ฒฉ๋ณด๋‹ค ์ €๋ ดํ•œ์ง€ ๋น„์‹ผ์ง€ ๋น„๊ตํ•˜์—ฌ, ํ˜„์žฌ ๋„์‹œ์˜ ์ฃผ์œ  ๊ฐ€๊ฒฉ์ด ๋” ์‹ธ๋‹ค๋ฉด ํ˜„์žฌ ์ฃผ์œ ์†Œ์—์„œ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๋„์‹œ๋“ค์˜ ๊ฑฐ๋ฆฌ๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์ฃผ์œ ๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ๋‹จ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๋„์‹œ๋“ค ์ค‘ ํ˜„ ์ฃผ์œ ์†Œ๋ณด๋‹ค ๋” ์‹ผ ๊ณณ์ด ์žˆ๋‹ค๋ฉด ๊ทธ ์ง€์ ๋ถ€ํ„ฐ๋Š” ๋” ์‹ผ ๊ฐ€๊ฒฉ์œผ๋กœ ์ฃผ์œ ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

# ๋ถ€๋ถ„ ์„ฑ๊ณต(58์ )

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt';
const [n, d, p] = fs.readFileSync(filePath).toString().trim().split('\n');

let dis = d.split(' ').map(Number); // 1
let cost = p.split(' ').map(Number); // 1

let curr = cost[0]; // 2
let sum = 0; // 3
for (let i = 0; i < n - 1; i++) {
  sum += curr * dis[i]; // 4
  if (curr > cost[i + 1]) curr = cost[i + 1]; // 5
}
console.log(sum);
1
2
3
4
5
6
7
8
9
10
11
12
13
14

์•Œ๊ณ ๋ฆฌ์ฆ˜: ๊ทธ๋ฆฌ๋””

  1. ๋„์‹œ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ dis ๋ณ€์ˆ˜์— Number ํƒ€์ž… ๋ฐฐ์—ด๋กœ, ์ฃผ์œ ์†Œ์˜ ๋ฆฌํ„ฐ๋‹น ๊ฐ€๊ฒฉ์„ cost ๋ฐฐ์—ด์— Number ํƒ€์ž… ๋ฐฐ์—ด๋กœ ํ• ๋‹นํ–ˆ๋‹ค.
  2. curr ์€ ์ง€๋‚˜์˜จ ๋งˆ์„๋“ค ์ค‘ ๊ฐ€์žฅ ์‹ผ ์ฃผ์œ ๊ฐ’์„ ๋‹ด์„ ๊ฒƒ์ด๋‹ค. ์ดˆ๊นƒ๊ฐ’์œผ๋กœ ๊ฐ€์žฅ ์•ž ๋„์‹œ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
  3. ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋งˆ์„์€ ์ฃผ์œ ๊ฐ€ ํ•„์š” ์—†๊ธฐ ๋•Œ๋ฌธ์— n - 1 ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
  4. ์ง€๋‚˜์˜จ ๊ฑฐ๋ฆฌ๊นŒ์ง€ ์ฃผ์œ ํ•œ ๊ฐ€๊ฒฉ์ด๋‹ค. (๊ฐ€๊ฒฉ x ๊ฑฐ๋ฆฌ)
  5. ๋‹ค์Œ ๋„์‹œ์˜ ์ฃผ์œ  ๊ฐ€๊ฒฉ์ด ๋” ์‹ธ๋‹ค๋ฉด curr ๋ณ€์ˆ˜์— ๋‹ค์Œ ์ฃผ์œ  ๊ฐ€๊ฒฉ์„ ์ €์žฅํ•œ๋‹ค.

์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด ์ตœ์ข…์ ์œผ๋กœ ์ตœ์†Œ์˜ ๋น„์šฉ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

58์  ์œผ๋กœ ๋ถ€๋ถ„ ์„ฑ๊ณตํ–ˆ๋‹ค. ์„œ๋ธŒ ํƒœ์Šคํฌ์˜ 2๋ฒˆ๊นŒ์ง€ ์ˆ˜ํ–‰ํ•œ ๊ฒƒ์ด๋‹ค.

3๋ฒˆ ํƒœ์Šคํฌ์˜ โ€˜์›๋ž˜์˜ ์ œ์•ฝ์กฐ๊ฑด ์ด์™ธ์— ์•„๋ฌด ์ œ์•ฝ์กฐ๊ฑด์ด ์—†๋‹ค.โ€™ ๊ฐ€ ๋ฌด์Šจ ์˜๋ฏธ์ธ์ง€ ํ•œ์ฐธ ๊ณ ๋ฏผํ–ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ Number ํƒ€์ž…์ด ์•„๋‹Œ BigInt ํƒ€์ž…์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

BigInt ๋Š” ๊ธธ์ด์˜ โ€˜์ œ์•ฝ ์—†์ดโ€™ ์ •์ˆ˜๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ˆซ์žํ˜•์ด๋‹ค.

# ์„ฑ๊ณต (100์ )

์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ Number ํƒ€์ž…์ด ์•„๋‹Œ BigInt ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์žฌ ์ œ์ถœํ–ˆ๋‹ค.

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt';
const [n, d, p] = fs.readFileSync(filePath).toString().trim().split('\n');

let dis = d.split(' ').map(BigInt);
let cost = p.split(' ').map(BigInt);

let curr = cost[0];
let sum = 0n;
for (let i = 0; i < n - 1; i++) {
  sum += curr * dis[i];
  if (curr > cost[i + 1]) curr = cost[i + 1];
}
console.log(String(sum));
1
2
3
4
5
6
7
8
9
10
11
12
13
14

์„ฑ๊ณต!

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