๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๐Ÿ”—๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
 

13305๋ฒˆ: ์ฃผ์œ ์†Œ

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

www.acmicpc.net

 

 

๋ฌธ์ œ ์„ค๋ช…

์–ด๋–ค ๋‚˜๋ผ์— 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์›์ด๋‹ค.

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

 


์ž…๋ ฅ

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

 


์ถœ๋ ฅ

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

 


์„œ๋ธŒํƒœ์Šคํฌ

 


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

 


ํ’€์ด ์ „๋žต

๋„์‹œ ๊ฐœ์ˆ˜์™€ ๊ฑฐ๋ฆฌ, ๊ธฐ๋ฆ„๊ฐ’์ด ๊ต‰์žฅํžˆ ํฐ ์ˆ˜๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜๋„ ์žˆ์–ด์„œ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(overflow)๋ฅผ ๊ฑฑ์ •ํ–ˆ๋Š”๋ฐ, Python3์˜ ์ •์ˆ˜ํ˜• ๋ฒ”์œ„์— ์ œํ•œ์ด ์—†๋”๊ตฐ์š”. ๊ทธ๋ž˜์„œ ๋ณ„ ๊ฑฑ์ •์—†์ด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ’€์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ž…๋ ฅ๋ฐ›์„ ๋•Œ, ๋ชจ๋“  ๊ฑฐ๋ฆฌ์˜ ์ดํ•ฉ๊ณผ ๊ฐ€์žฅ ๊ฐ’ ์‹ผ ๊ธฐ๋ฆ„ ๊ฐ’์„ ๋ณ„๋„๋กœ ์ €์žฅํ•ด๋‘”๋‹ค.
  • ํ˜„์žฌ ๋‚ด๊ฐ€ ๋จธ๋ฌด๋ฅด๋Š” ๋„์‹œ์˜ ๊ธฐ๋ฆ„๊ฐ’  ≤  ๋‹ค์Œ ๋„์‹œ์˜ ๊ธฐ๋ฆ„๊ฐ’
    • ๋‹ค์Œ ๋„์‹œ๊นŒ์ง€ ๊ฑฐ๋ฆฌ๋งŒํผ์˜ ๊ธฐ๋ฆ„์„ ๊ตฌ๋งคํ•œ๋‹ค.
    • ์ด๋™ ๊ฑฐ๋ฆฌ์— ๋‹ค์Œ ๋„์‹œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋งŒํผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
    • ๊ทธ ๋‹ค์Œ ๋„์‹œ์˜ ๊ธฐ๋ฆ„ ๊ฐ’์„ ์‚ดํŽด๋ณธ๋‹ค.
    • ๊ทธ ๋‹ค์Œ ๋„์‹œ ์—ญ์‹œ ๋น„์‹ธ๋‹ค๋ฉด ์œ„ ๊ณผ์ • ๋ฐ˜๋ณต
  • ํ˜„์žฌ ๋‚ด๊ฐ€ ๋จธ๋ฌด๋ฅด๋Š” ๋„์‹œ์˜ ๊ธฐ๋ฆ„๊ฐ’  >  ๋‹ค์Œ ๋„์‹œ์˜ ๊ธฐ๋ฆ„๊ฐ’
    • ๋‹ค์Œ ๋„์‹œ๊นŒ์ง€ ๊ฑฐ๋ฆฌ๋งŒํผ์˜ ๊ธฐ๋ฆ„์„ ๊ตฌ๋งคํ•œ๋‹ค.
    • ์ด๋™ ๊ฑฐ๋ฆฌ์— ๋‹ค์Œ ๋„์‹œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋งŒํผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
    • ๋ชจ๋“  ๊ฑฐ๋ฆฌ์˜ ์ดํ•ฉ์—์„œ ์ด๋™ํ•œ๋งŒํผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋บ€๋‹ค.
    • ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ 0์œผ๋กœ ๋‹ค์‹œ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  • ๋งˆ์ง€๋ง‰ ๋„์‹œ์˜ ์ „ ๋„์‹œ์— ๋„์ฐฉํ–ˆ๋‹ค๋ฉด ๋‚จ์€ ๊ฑฐ๋ฆฌ๋งŒํผ ๊ธฐ๋ฆ„์„ ์‚ฌ๋ฉด ๋
  • ๋งŒ์•ฝ ์ค‘๊ฐ„์— ๊ธฐ๋ฆ„์ด ๊ฐ€์žฅ ์‹ผ ๋„์‹œ์— ๋„์ฐฉํ–ˆ๋‹ค๋ฉด, ๋‚จ์€ ์ด ๊ฑฐ๋ฆฌ๋งŒํผ ๊ธฐ๋ฆ„์„ ์‚ฌ๊ณ  ๋

์‹œ๋‚˜๋ฆฌ์˜ค

  • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋„์‹œ 5๊ฐœ๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค.
  • ์ž…๋ ฅ ๋ฐ›์„ ๋•Œ, ์ด ๊ฑฐ๋ฆฌ์˜ ํ•ฉ๊ณผ ์ œ์ผ ์‹ผ ๊ธฐ๋ฆ„๊ฐ’์„ ๋ณ„๋„๋กœ ์ €์žฅํ•ด๋‘ก๋‹ˆ๋‹ค.

  • ๋‘ ๋ฒˆ์งธ ๋„์‹œ๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ ํ˜„์žฌ ๋„์‹œ๋ณด๋‹ค ๊ธฐ๋ฆ„ ๊ฐ’์ด ๋น„์Œ‰๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋„์‹œ๊นŒ์ง€์˜ ๊ธฐ๋ฆ„์„ ๊ตฌ๋งคํ•˜๊ณ , ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ๊ทธ ๋‹ค์Œ ๋„์‹œ๋„ ์‚ดํŽด๋ณด๋‹ˆ ์—ญ์‹œ ๋น„์Œ‰๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋„์‹œ์—์„œ ์„ธ ๋ฒˆ์งธ ๋„์‹œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋งŒํผ ๊ธฐ๋ฆ„ ๊ฐ’์„ ๊ตฌ๋งคํ•˜๊ณ  ๊ฑฐ๋ฆฌ๋„ ์ €์žฅํ•ด์ค๋‹ˆ๋‹ค.

  • ๋„ค ๋ฒˆ์งธ ๋„์‹œ๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ, ํ˜„์žฌ ๋„์‹œ๋ณด๋‹ค ๊ธฐ๋ฆ„ ๊ฐ’์ด ์Œ‰๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„ค ๋ฒˆ์งธ ๋„์‹œ๋กœ ๊ฐ€๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„ธ ๋ฒˆ์งธ ๋„์‹œ์™€ ๋„ค ๋ฒˆ์งธ ๋„์‹œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋งŒํผ ๊ธฐ๋ฆ„๋„ ํ•„์š”ํ•˜๋ฏ€๋กœ ๊ตฌ๋งคํ•ด์ค๋‹ˆ๋‹ค.
  • ์ฒซ ๋ฒˆ์งธ ๋„์‹œ์—์„œ ๋„ค ๋ฒˆ์งธ ๋„์‹œ๊นŒ์ง€ ๊ฐ€๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ๊ฑฐ๋ฆฌ๋ฅผ ์ด ๊ฑฐ๋ฆฌ์—์„œ ๋นผ์ค๋‹ˆ๋‹ค. ( 12 - 7 = 5km)
  • ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ค๋‹ˆ๋‹ค.

  • ๋„ค ๋ฒˆ์งธ ๋„์‹œ์— ์™€๋ณด๋‹ˆ ์‹œ๋‚˜๋ฆฌ์˜ค ์ข…๋ฃŒ ์กฐ๊ฑด ๋‘ ๊ฐœ๋ฅผ ๋ชจ๋‘ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค.
    • ๋งˆ์ง€๋ง‰ ์ „ ๋„์‹œ๊นŒ์ง€ ์˜จ ์ƒํ™ฉ์ผ ๊ฒฝ์šฐ
    • ์ œ์ผ ๊ฐ’ ์‹ผ ๊ธฐ๋ฆ„ ๊ฐ’์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๋„์‹œ์ผ ๊ฒฝ์šฐ
  • ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ๋งŒ์กฑํ•ด๋„ ๋˜๊ณ , ๋‘˜ ์ค‘ ์–ด๋Š ๊ฑธ ํ•˜๋”๋ผ๋„ ๋˜‘๊ฐ™์€ ๊ฒฐ๊ณผ์ด๋ฏ€๋กœ ์ง„ํ–‰ํ•ด์ค๋‹ˆ๋‹ค.

 

์ด๋กœ์จ ์ตœ์†Œ ๋น„์šฉ 50์›๋งŒํผ๋งŒ ๊ธฐ๋ฆ„์„ ๊ตฌ๋งคํ•˜๋ฉด ์ด๋™์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ค‘๊ฐ„์— ์ œ์ผ ์‹ผ ๊ธฐ๋ฆ„ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋„์‹œ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

 

์ค‘๊ฐ„์— ์ œ์ผ ๊ฐ’ ์‹ผ ๊ธฐ๋ฆ„๊ฐ’์˜ ๋„์‹œ๋ฅผ ๋งŒ๋‚  ๊ฒฝ์šฐ

  • ์œ„ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋‘ ๋ฒˆ์งธ ๋„์‹œ์™€ ๋„ค ๋ฒˆ์งธ ๋„์‹œ๋งŒ ๋ฐ”๊ฟ”๋ณด์•˜์Šต๋‹ˆ๋‹ค.

  • ํ˜„์žฌ ๋„์‹œ์—์„œ ๋‹ค์Œ ๋„์‹œ๋ฅผ ๋ณด๋‹ˆ, ํ˜„์žฌ ๋„์‹œ๋ณด๋‹ค ๊ธฐ๋ฆ„๊ฐ’์ด ์Œ‰๋‹ˆ๋‹ค๋‹ค์Œ ๋„์‹œ๊นŒ์ง€ ๊ฑฐ๋ฆฌ๋งŒํผ์˜ ๊ธฐ๋ฆ„๋งŒ ๊ตฌ๋งคํ•˜๊ณ , ์ด ๊ฑฐ๋ฆฌ์—์„œ ํ•ด๋‹น ๊ฑฐ๋ฆฌ๋ฅผ ๋นผ์ค์‹œ๋‹ค.

  • ๋‘ ๋ฒˆ์งธ ๋„์‹œ์— ์™€ ๋ณด๋‹ˆ, ์ œ์ผ ๊ธฐ๋ฆ„ ๊ฐ’์ด ์‹ผ ๋„์‹œ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋‚จ์€ ์ด ๊ฑฐ๋ฆฌ๋งŒํผ ์—ฌ๊ธฐ์„œ ๊ธฐ๋ฆ„์„ ๊ตฌ๋งคํ•˜๋ฉด ๋˜๋ฏ€๋กœ, ๋’ค์— ๋‚จ์€ ๋„์‹œ๋“ค์€ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

 

์ด๋กœ์จ, ๊ธฐ๋ฆ„ ๊ฐ’์„ ์ตœ์†Œ๋กœ 40์›๋งŒ ๋“ค์ด๋ฉด ๋ชจ๋“  ๋„์‹œ๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๊ฒฐ๊ณผ

# Python3๋Š” ์ •์ˆ˜ ๋ฒ”์œ„๊ฐ€ ๋ฌด์ œํ•œ

N = int(input())           # ๋„์‹œ์˜ ๊ฐœ์ˆ˜ (2 <= N <= 100000)
distances = list(map(int, input().split()))
oilCosts = list(map(int, input().split()))
totalDistance = sum(distances)
minOilCost = min(oilCosts)

#---------------------------------------------------------------------

def Solution(distances, totalDistance, oilCosts, minOilCost):
    i = 0
    totalOilCost = 0
    
    while i < N - 1:                           # ๋งˆ์ง€๋ง‰ ๋„์‹œ ์ „๊นŒ์ง€๋งŒ ์ฒดํฌํ•˜๋ฉด ๋จ
        currentOilCost = oilCosts[i]
        isNextLastCity = (i == N - 2)
        moveDistance = 0
    
        if isNextLastCity:                     # ๋งˆ์ง€๋ง‰ ์ „ ๋„์‹œ๊นŒ์ง€ ์™”๋‹ค๋ฉด ๊ทธ ๋„์‹œ์—์„œ ๋‚จ์€ ๊ฑฐ๋ฆฌ๋งŒํผ ๊ธฐ๋ฆ„ ์‚ฌ๋ฉด ๋
            totalOilCost += currentOilCost * totalDistance
            return totalOilCost
    
        while oilCosts[i+1] >= currentOilCost: # ๋‹ค์Œ ๋„์‹œ ๊ธฐ๋ฆ„๊ฐ’์ด ํ˜„์žฌ ๋‚ด๊ฐ€ ๋จธ๋ฌด๋ฅด๋Š” ๋„์‹œ ๊ธฐ๋ฆ„๊ฐ’๋ณด๋‹ค ๋น„์Œ€ ๊ฒฝ์šฐ
            betweenDistance = distances[i]     # ํ˜„์žฌ ๋„์‹œ ๊ธฐ๋ฆ„๊ฐ’๋ณด๋‹ค ๊ฐ’ ์‹ผ ๋„์‹œ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์ด๋™ํ• ๋งŒํผ์˜ ๊ธฐ๋ฆ„์„ ํ˜„์žฌ ๋„์‹œ์—์„œ ๊ตฌ๋งค
            moveDistance += betweenDistance
            totalOilCost += currentOilCost * betweenDistance
            i += 1
        
            if i == N - 2:
                break
        
        # ๊ธฐ๋ฆ„๊ฐ’์ด ์‹ผ ๋„์‹œ์™€ ๊ทธ ์ด์ „ ๋„์‹œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋งŒํผ ๊ธฐ๋ฆ„ ๊ตฌ๋งค๊ฐ€ while๋ฌธ ์กฐ๊ฑด์— ์˜ํ•ด ์ƒ๋žต๋์œผ๋ฏ€๋กœ ์ง„ํ–‰
        betweenDistance = distances[i]
        moveDistance += betweenDistance
        totalOilCost += currentOilCost * betweenDistance
        totalDistance -= moveDistance
        i += 1
    
        if oilCosts[i] == minOilCost:   # ์ œ์ผ ๊ฐ’ ์‹ผ ์ฃผ์œ ์†Œ๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด ๋‚จ์€ ๊ฑฐ๋ฆฌ๋งŒํผ ์‚ฌ๊ณ  ๋
            totalOilCost += minOilCost * totalDistance
            return totalOilCost
    


result = Solution(distances, totalDistance, oilCosts, minOilCost)
print(result)

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•