๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ์ธ๊ณต๋ถ€/Algorithm

[๋ฐฑ์ค€][Node.js] 2455๋ฒˆ : ์ง€๋Šฅํ˜• ๊ธฐ์ฐจ

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2021. 8. 12.

 

 

Algorithm

-  ์ง€๋Šฅํ˜• ๊ธฐ์ฐจ -

 


 

๋ฌธ์ œ

์ตœ๊ทผ์— ๊ฐœ๋ฐœ๋œ ์ง€๋Šฅํ˜• ๊ธฐ์ฐจ๊ฐ€ 1๋ฒˆ์—ญ(์ถœ๋ฐœ์—ญ)๋ถ€ํ„ฐ 4๋ฒˆ์—ญ(์ข…์ฐฉ์—ญ)๊นŒ์ง€ 4๊ฐœ์˜ ์ •์ฐจ์—ญ์ด ์žˆ๋Š” ๋…ธ์„ ์—์„œ ์šดํ–‰๋˜๊ณ  ์žˆ๋‹ค. ์ด ๊ธฐ์ฐจ์—๋Š” ํƒ€๊ฑฐ๋‚˜ ๋‚ด๋ฆฌ๋Š” ์‚ฌ๋žŒ ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์น˜๊ฐ€ ์žˆ๋‹ค. ์ด ์žฅ์น˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ถœ๋ฐœ์—ญ์—์„œ ์ข…์ฐฉ์—ญ๊นŒ์ง€ ๊ฐ€๋Š” ๋„์ค‘ ๊ธฐ์ฐจ ์•ˆ์— ์‚ฌ๋žŒ์ด ๊ฐ€์žฅ ๋งŽ์„ ๋•Œ์˜ ์‚ฌ๋žŒ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋‹จ, ์ด ๊ธฐ์ฐจ๋ฅผ ์ด์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์งˆ์„œ ์˜์‹์ด ํˆฌ์ฒ ํ•˜์—ฌ, ์—ญ์—์„œ ๊ธฐ์ฐจ์— ํƒˆ ๋•Œ, ๋‚ด๋ฆด ์‚ฌ๋žŒ์ด ๋ชจ๋‘ ๋‚ด๋ฆฐ ํ›„์— ๊ธฐ์ฐจ์— ํƒ„๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

  ๋‚ด๋ฆฐ ์‚ฌ๋žŒ ์ˆ˜ ํƒ„ ์‚ฌ๋žŒ ์ˆ˜
1๋ฒˆ์—ญ(์ถœ๋ฐœ์—ญ) 0 32
2๋ฒˆ์—ญ 3 13
3๋ฒˆ์—ญ 28 25
4๋ฒˆ์—ญ(์ข…์ฐฉ์—ญ) 39 0

์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์ž. ์ด ๊ฒฝ์šฐ, ๊ธฐ์ฐจ ์•ˆ์— ์‚ฌ๋žŒ์ด ๊ฐ€์žฅ ๋งŽ์€ ๋•Œ๋Š” 2๋ฒˆ์—ญ์—์„œ 3๋ช…์˜ ์‚ฌ๋žŒ์ด ๊ธฐ์ฐจ์—์„œ ๋‚ด๋ฆฌ๊ณ , 13๋ช…์˜ ์‚ฌ๋žŒ์ด ๊ธฐ์ฐจ์— ํƒ”์„ ๋•Œ๋กœ, ์ด 42๋ช…์˜ ์‚ฌ๋žŒ์ด ๊ธฐ์ฐจ ์•ˆ์— ์žˆ๋‹ค.

์ด ๊ธฐ์ฐจ๋Š” ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ์šดํ–‰๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

  1. ๊ธฐ์ฐจ๋Š” ์—ญ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์šดํ–‰ํ•œ๋‹ค.
  2. ์ถœ๋ฐœ์—ญ์—์„œ ๋‚ด๋ฆฐ ์‚ฌ๋žŒ ์ˆ˜์™€ ์ข…์ฐฉ์—ญ์—์„œ ํƒ„ ์‚ฌ๋žŒ ์ˆ˜๋Š” 0์ด๋‹ค.
  3. ๊ฐ ์—ญ์—์„œ ํ˜„์žฌ ๊ธฐ์ฐจ์— ์žˆ๋Š” ์‚ฌ๋žŒ๋ณด๋‹ค ๋” ๋งŽ์€ ์‚ฌ๋žŒ์ด ๋‚ด๋ฆฌ๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.
  4. ๊ธฐ์ฐจ์˜ ์ •์›์€ ์ตœ๋Œ€ 10,000๋ช…์ด๊ณ , ์ •์›์„ ์ดˆ๊ณผํ•˜์—ฌ ํƒ€๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

4๊ฐœ์˜ ์—ญ์— ๋Œ€ํ•ด ๊ธฐ์ฐจ์—์„œ ๋‚ด๋ฆฐ ์‚ฌ๋žŒ ์ˆ˜์™€ ํƒ„ ์‚ฌ๋žŒ ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ธฐ์ฐจ์— ์‚ฌ๋žŒ์ด ๊ฐ€์žฅ ๋งŽ์„ ๋•Œ์˜ ์‚ฌ๋žŒ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

๊ฐ ์—ญ์—์„œ ๋‚ด๋ฆฐ ์‚ฌ๋žŒ ์ˆ˜์™€ ํƒ„ ์‚ฌ๋žŒ ์ˆ˜๊ฐ€ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฒซ์งธ ์ค„๋ถ€ํ„ฐ ๋„ท์งธ ์ค„๊นŒ์ง€ ์—ญ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. 

 

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

 

๋ฌธ์ œ ํ’€๊ธฐ

let fs = require("fs");
let input = fs.readFileSync("/dev/stdin")
	.toString()
	.trim()
	.split("\n")
	.map((el) => el.split(" ").map((el) => Number(el)));

let result = [];

for (let i = 0; i < input.length; i++) {
	if (result.length === 0) {
		result.push(input[i][1]);
	} else {
		result.push(result[result.length - 1] - input[i][0] + input[i][1]);
	}
}

console.log(Math.max(...result));

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€