• Home
  • About
    • on Weekend photo

      on Weekend

      ๐™Ž๐™ฉ๐™ช๐™™๐™ฎ๐™ž๐™ฃ๐™œ

    • Learn More
    • Instagram
    • Github
  • Archive
    • All Posts
    • All Tags
    • All Categories
  • Categories
    • Problem Solving
    • TIL
    • Study
    • Etc
    • ํ•„์‚ฌ
  • Projects

[๋ฐฑ์ค€] 1449

22 Jan 2021

๋ฌธ์ œ ๋งํฌ

ํ’€์ด

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

๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์œผ๋กœ๋Š” ๋‹ค์Œ์˜ ์ฝ”๋“œ๋„ ์ •๋‹ต์— ๊ฐ€๊น๊ฒ ์ง€๋งŒ, ์–ด๋””์—์„ ๊ฐ€ ์น˜๋ช…์ ์ธ ์‹ค์ˆ˜๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ จํ•˜์—ฌ ๋ˆˆ๋ฒ„๊น…์„ ํ•ด์ฃผ์‹ค ๋ถ„ ์žˆ์œผ์‹œ๋ฉด ํ™˜๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

  • ์‹คํŒจ ์ฝ”๋“œ
n, l = map(int, input().split(' '))
arr = list(map(int, input().split(' ')))
arr.sort(reverse=True)

tmpl = l # ํ˜„์žฌ ํ…Œ์ดํ”„
loc = arr[0] # ํ˜„์žฌ ํ…Œ์ดํ”„๋ฅผ ๋ถ™์ด๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ์œ„์น˜
ans = 1 # ์‚ฌ์šฉํ•œ ํ…Œ์ดํ”„์˜ ๊ฐฏ์ˆ˜

for i in range(1, n) :
  # ํ˜„์žฌ ํ…Œ์ดํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ๋‹ค.
  tmpl -= (loc - arr[i] + 1)

  # ๋งŒ์•ฝ ํ…Œ์ดํ”„๋ฅผ ๋‹ค ์“ฐ๊ฒŒ๋œ๋‹ค๋ฉด
  if(tmpl <= 0) :
    tmpl = l # ์ƒˆ๋กœ ํ…Œ์ดํ”„๋ฅผ ๊บผ๋‚ด๊ณ 
    ans += 1 # ์‚ฌ์šฉํ•œ ํ…Œ์ดํ”„์˜ ๊ฐฏ์ˆ˜ +=1
    loc = arr[i] # ํ˜„์žฌ ์œ„์น˜๋ถ€ํ„ฐ ๋‹ค์‹œ ํ…Œ์ดํ”„๋ฅผ ๋ถ™์ธ๋‹ค.

print(ans)

์•ž ๋’ค 0.5 ๊ฐ„๊ฒฉ์„ ์ฒ˜์Œ์—๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜๋‹ค๊ฐ€, tmpl -= (loc - arr[i] + 1)๋กœ ๋ฌด๋งˆํ•˜๋ ค ํ•œ ๋ถ€๋ถ„์—์„œ ๋ญ”๊ฐ€ ๊ฒฝ๊ณ„๊ฐ’ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋ น ์ธํ’‹์œผ๋กœ 4 2 1 2 3 100 ์ด ๋“ค์–ด์˜ค๋ฉด, ๋ถ„๋ช… 3์„ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š”๋ฐ 2๋ฅผ ์ถœ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‹จ์ถ”๋ถ€ํ„ฐ ์ž˜๋ชป ๋ผ์šด ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ง€์†ํ•˜๋А๋ƒ? ์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ ๋จธ๋ฆฟ ์†์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ทธ๋Œ€๋กœ ๋ฐ›์•„์ ๋А๋ƒ ์ค‘ ํ›„์ž๋ฅผ ์„ ํƒํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ •๋‹ต ์ฝ”๋“œ
n, l = map(int, input().split())
arr = list(map(int, input().split()))
arr.sort()

tapeL = 0 # ์ด์–ด์ง€๋Š” ๊ตฌ๋ฉ๋“ค์„ ๋ฉ”์šฐ๊ธฐ ์œ„ํ•ด ์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์šฉํ•œ ํ…Œ์ดํ”„์˜ ๊ธธ์ด
ans = 1 # ์‚ฌ์šฉํ•œ ํ…Œ์ดํ”„์˜ ๊ฐฏ์ˆ˜

for i in range(1,n) :
  recL = arr[i]-arr[i-1]
  tapeL += recL
  if(tapeL >= l) :
    ans += 1
    tapeL = 0
print(ans)

์•Œ๊ณ ๋ฆฌ์ฆ˜

  1. ํ˜„์žฌ ๊ตฌ๋ฉ๊ณผ ๊ทธ ๋‹ค์Œ ๊ตฌ๋ฉ์˜ ๊ฐ„๊ฒฉ์„ ๋ฐ›์€ ํ›„(recL = arr[i]-arr[i-1]), ๊ทธ ๊ฐ„๊ฒฉ๋งŒํผ ํ…Œ์ดํ”„๋ฅผ ๋ถ™์ด๋ ค ์‹œ๋„(tapeL += recL )ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ(tapeL >= 1, ์ฆ‰ ๋ถ™์ด๋ ค ์‹œ๋„ํ–ˆ๋Š”๋ฐ ์ •ํ•ด์ง„ ํ…Œ์ดํ”„์˜ ๊ธธ์ด๋ฅผ ๋„˜์–ด์„œ๋Š” ๊ฒฝ์šฐ(tapeL>l)์™€ ์ •ํ™•ํžˆ ๊ทธ ํ…Œ์ดํ”„๋ฅผ ๋‹ค ์“ด ๊ฒฝ์šฐ(tapeL==l),
  3. ํ…Œ์ดํ”„๋ฅผ ํ•˜๋‚˜ ๋” ๊บผ๋‚ด๊ณ (ans+=1) ํ˜„์žฌ๊นŒ์ง€ ์‚ฌ์šฉํ•œ ํ…Œ์ดํ”„์˜ ๊ธธ์ด๋ฅผ ์ดˆ๊ธฐํ™”(tapeL = 0)ํ•ด์ค๋‹ˆ๋‹ค.


problem_solvingpython Share Tweet +1