๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/17676

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - [1์ฐจ] ์ถ”์„ ํŠธ๋ž˜ํ”ฝ

์ž…๋ ฅ: [ "2016-09-15 20:59:57.421 0.351s", "2016-09-15 20:59:58.233 1.181s", "2016-09-15 20:59:58.299 0.8s", "2016-09-15 20:59:58.688 1.041s", "2016-09-15 20:59:59.591 1.412s", "2016-09-15 21:00:00.464 1.466s", "2016-09-15 21:00:00.741 1.581s", "2016-09-1

programmers.co.kr

 

์ด๋ฒˆ ์ถ”์„์—๋„ ์‹œ์Šคํ…œ ์žฅ์• ๊ฐ€ ์—†๋Š” ๋ช…์ ˆ์„ ๋ณด๋‚ด๊ณ  ์‹ถ์€ ์–ดํ”ผ์น˜๋Š” ์„œ๋ฒ„๋ฅผ ์ฆ์„คํ•ด์•ผ ํ• ์ง€ ๊ณ ๋ฏผ์ด๋‹ค. ์žฅ์•  ๋Œ€๋น„์šฉ ์„œ๋ฒ„ ์ฆ์„ค ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘๋…„ ์ถ”์„ ๊ธฐ๊ฐ„์ธ 9์›” 15์ผ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•œ ํ›„ ์ดˆ๋‹น ์ตœ๋Œ€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ณ„์‚ฐํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ดˆ๋‹น ์ตœ๋Œ€ ์ฒ˜๋ฆฌ๋Ÿ‰์€ ์š”์ฒญ์˜ ์‘๋‹ต ์™„๋ฃŒ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์ž„์˜ ์‹œ๊ฐ„๋ถ€ํ„ฐ 1์ดˆ(=1,000๋ฐ€๋ฆฌ์ดˆ)๊ฐ„ ์ฒ˜๋ฆฌํ•˜๋Š” ์š”์ฒญ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ž…๋ ฅ ํ˜•์‹

  • solution ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜๋Š” lines ๋ฐฐ์—ด์€ N(1 โ‰ฆ N โ‰ฆ 2,000)๊ฐœ์˜ ๋กœ๊ทธ ๋ฌธ์ž์—ด๋กœ ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ฐ ๋กœ๊ทธ ๋ฌธ์ž์—ด๋งˆ๋‹ค ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์™„๋ฃŒ์‹œ๊ฐ„ S์™€ ์ฒ˜๋ฆฌ์‹œ๊ฐ„ T๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋‹ค.
  • ์‘๋‹ต์™„๋ฃŒ์‹œ๊ฐ„ S๋Š” ์ž‘๋…„ ์ถ”์„์ธ 2016๋…„ 9์›” 15์ผ๋งŒ ํฌํ•จํ•˜์—ฌ ๊ณ ์ • ๊ธธ์ด 2016-09-15 hh:mm:ss.sss ํ˜•์‹์œผ๋กœ ๋˜์–ด ์žˆ๋‹ค.
  • ์ฒ˜๋ฆฌ์‹œ๊ฐ„ T๋Š” 0.1s, 0.312s, 2s ์™€ ๊ฐ™์ด ์ตœ๋Œ€ ์†Œ์ˆ˜์  ์…‹์งธ ์ž๋ฆฌ๊นŒ์ง€ ๊ธฐ๋กํ•˜๋ฉฐ ๋’ค์—๋Š” ์ดˆ ๋‹จ์œ„๋ฅผ ์˜๋ฏธํ•˜๋Š” s๋กœ ๋๋‚œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋กœ๊ทธ ๋ฌธ์ž์—ด 2016-09-15 03:10:33.020 0.011s์€ "2016๋…„ 9์›” 15์ผ ์˜ค์ „ 3์‹œ 10๋ถ„ 33.010์ดˆ"๋ถ€ํ„ฐ "2016๋…„ 9์›” 15์ผ ์˜ค์ „ 3์‹œ 10๋ถ„ 33.020์ดˆ"๊นŒ์ง€ "0.011์ดˆ" ๋™์•ˆ ์ฒ˜๋ฆฌ๋œ ์š”์ฒญ์„ ์˜๋ฏธํ•œ๋‹ค. (์ฒ˜๋ฆฌ์‹œ๊ฐ„์€ ์‹œ์ž‘์‹œ๊ฐ„๊ณผ ๋์‹œ๊ฐ„์„ ํฌํ•จ)
  • ์„œ๋ฒ„์—๋Š” ํƒ€์ž„์•„์›ƒ์ด 3์ดˆ๋กœ ์ ์šฉ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜๋ฆฌ์‹œ๊ฐ„์€ 0.001 โ‰ฆ T โ‰ฆ 3.000์ด๋‹ค.
  • lines ๋ฐฐ์—ด์€ ์‘๋‹ต์™„๋ฃŒ์‹œ๊ฐ„ S๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค.

ํ’€์ด

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

 

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

 

๋ฐ์ดํ„ฐ A์™€ B๊ฐ€ ์žˆ์„ ๋•Œ, 

  1. A๊ฐ€ ์‹œ์ž‘ํ•œ ์‹œ๊ฐ„ ~ A๊ฐ€ ์‹œ์ž‘ํ•œ ์‹œ๊ฐ„ + 1์ดˆ์— B๊ฐ€ ์‹œ์ž‘ํ•œ ์‹œ๊ฐ„์ด๋‚˜ ๋๋‚œ ์‹œ๊ฐ„์ด ํฌํ•จ๋˜๋Š”๊ฐ€
  2. A๊ฐ€ ๋๋‚œ ์‹œ๊ฐ„ ~ A๊ฐ€ ๋๋‚œ ์‹œ๊ฐ„ + 1์ดˆ์— B๊ฐ€ ์‹œ์ž‘ํ•œ ์‹œ๊ฐ„์ด๋‚˜ ๋๋‚œ ์‹œ๊ฐ„์ด ํฌํ•จ๋˜๋Š”๊ฐ€ 
  3. A๊ฐ€ ์‹œ์ž‘ํ•œ ์‹œ๊ฐ„ ~ A๊ฐ€ ๋๋‚ธ ์‹œ๊ฐ„์ด B๊ฐ€ ์‹œ์ž‘ํ•œ ์‹œ๊ฐ„ ~ B๊ฐ€ ๋๋‚œ ์‹œ๊ฐ„์— ํฌํ•จ๋˜๋Š”๊ฐ€

์ฃผ์–ด์ง€๋Š” ์˜ˆ์ œ ์ผ€์ด์Šค์—๋Š” 3๋ฒˆ ์กฐ๊ฑด์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์•„ ๋– ์˜ฌ๋ฆฌ๊ธฐ๊ฐ€ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ๋น„๊ตํ•ด์•ผํ•  ์กฐ๊ฑด์ด ๋งŽ์ง€๋งŒ, ์Šค์œ„ํ”„ํŠธ์—์„œ๋Š” Range๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— Range์˜ contains์™€ overlaps๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. overlaps ๋ฉ”์„œ๋“œ๋Š” ํ˜„์žฌ ๋ฒ”์œ„์— ์ฃผ์–ด์ง€๋Š” ๋ฒ”์œ„๊ฐ€ ํฌํ•จ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. 

 

3๋ฒˆ ์กฐ๊ฑด์„ ํฌํ•จํ•˜๋Š” 2, 3, 18๋ฒˆ ์ผ€์ด์Šค ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์„ ์ •๋ง ๋งŽ์ด ์ผ๋Š”๋ฐ, ์‹ค์ œ ์‹œํ—˜์œผ๋กœ ๋‚˜์™”์œผ๋ฉด ์•„์ฐ”ํ–ˆ์„ ๊ฒƒ ๊ฐ™๋„ค์š”ใ… 

์ฝ”๋“œ