Dev.Beth
πŸπŸ’»πŸ
Dev.Beth
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (175)
    • πŸ€” PS(Problem Solving) (119)
      • λ°±μ€€(BOJ) (59)
      • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ (47)
      • Leet, ꡬ름 (6)
      • μ½”ν…Œ (7)
    • πŸ› οΈ 툴, κ·Έμ™Έ (10)
    • πŸ•·οΈ μ—λŸ¬, 버그 (15)
    • ✍️ 이둠 (30)
      • 이둠, 섀계 (3)
      • λ””μžμΈνŒ¨ν„΄ (1)
      • 자료ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜ (13)
      • λ„€νŠΈμ›Œν¬, λ°μ΄ν„°λ² μ΄μŠ€ (11)
      • κ°œλ°œμ„œ (2)

λΈ”λ‘œκ·Έ 메뉴

  • WRITE
  • ADMIN

곡지사항

  • 🍡 PS challenge

인기 κΈ€

νƒœκ·Έ

  • boj 1509 c++
  • λ°±μ€€ c++
  • Retrofit Post ν•œκΈ€
  • λ°±μ€€ 1520 c++
  • 2293
  • 2294 λ°±μ€€ c++
  • boj 2293
  • κ°€λŸ­μ‹œ κ°•μ œ μž¬λΆ€νŒ…
  • 2293 c++
  • λ°±μ€€ 2240
  • κ°€λŸ­μ‹œ 멈좀
  • 1520 c++
  • c++ 2294
  • 1509 c++
  • κ°€λŸ­μ‹œ μž¬λΆ€νŒ…
  • κ°€λŸ­μ‹œ 검은화면
  • λ°±μ€€ 1509 c++
  • λ°±μ€€ 2293
  • λ°±μ€€ 2294 c++
  • μ‚Όμ„± ν™”λ©΄ 멈좀
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ λ„€νŠΈμ›Œν¬ java
  • λ°±μ€€ 2294
  • Retrofit ν•œκΈ€ 깨짐
  • λ°±μ€€
  • λ°±μ€€ c++ 2293
  • Retrofit ν•œκΈ€κΉ¨μ§
  • κ°€λŸ­μ‹œ 검은화면 μž¬λΆ€νŒ…
  • 2294 c++
  • κ°€λŸ­μ‹œ λ¦¬λΆ€νŒ…
  • 2294

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
Dev.Beth

πŸπŸ’»πŸ

[λ°±μ€€/c++] 11066번 - 파일 ν•©μΉ˜κΈ°
πŸ€” PS(Problem Solving)/λ°±μ€€(BOJ)

[λ°±μ€€/c++] 11066번 - 파일 ν•©μΉ˜κΈ°

2019. 8. 17. 15:12
λ°˜μ‘ν˜•

문제

https://www.acmicpc.net/problem/11066


문제

μ†Œμ„€κ°€μΈ κΉ€λŒ€μ „μ€ μ†Œμ„€μ„ μ—¬λŸ¬ μž₯(chapter)으둜 λ‚˜λˆ„μ–΄ μ“°λŠ”λ°, 각 μž₯은 각각 λ‹€λ₯Έ νŒŒμΌμ— μ €μž₯ν•˜κ³€ ν•œλ‹€. μ†Œμ„€μ˜ λͺ¨λ“  μž₯을 μ“°κ³  λ‚˜μ„œλŠ” 각 μž₯이 μ“°μ—¬μ§„ νŒŒμΌμ„ ν•©μ³μ„œ μ΅œμ’…μ μœΌλ‘œ μ†Œμ„€μ˜ 완성본이 λ“€μ–΄μžˆλŠ” ν•œ 개의 νŒŒμΌμ„ λ§Œλ“ λ‹€. 이 κ³Όμ •μ—μ„œ 두 개의 νŒŒμΌμ„ ν•©μ³μ„œ ν•˜λ‚˜μ˜ μž„μ‹œνŒŒμΌμ„ λ§Œλ“€κ³ , 이 μž„μ‹œνŒŒμΌμ΄λ‚˜ μ›λž˜μ˜ νŒŒμΌμ„ 계속 두 κ°œμ”© ν•©μ³μ„œ μ†Œμ„€μ˜ μ—¬λŸ¬ μž₯듀이 연속이 λ˜λ„λ‘ νŒŒμΌμ„ ν•©μ³λ‚˜κ°€κ³ , μ΅œμ’…μ μœΌλ‘œλŠ” ν•˜λ‚˜μ˜ 파일둜 ν•©μΉœλ‹€. 두 개의 νŒŒμΌμ„ ν•©μΉ  λ•Œ ν•„μš”ν•œ λΉ„μš©(μ‹œκ°„ λ“±)이 두 파일 크기의 합이라고 κ°€μ •ν•  λ•Œ, μ΅œμ’…μ μΈ ν•œ 개의 νŒŒμΌμ„ μ™„μ„±ν•˜λŠ”λ° ν•„μš”ν•œ λΉ„μš©μ˜ 총 합을 κ³„μ‚°ν•˜μ‹œμ˜€.

예λ₯Ό λ“€μ–΄, C1, C2, C3, C4κ°€ 연속적인 λ„€ 개의 μž₯을 μˆ˜λ‘ν•˜κ³  μžˆλŠ” 파일이고, 파일 크기가 각각 40, 30, 30, 50 이라고 ν•˜μž. 이 νŒŒμΌλ“€μ„ ν•©μΉ˜λŠ” κ³Όμ •μ—μ„œ, λ¨Όμ € C2와 C3λ₯Ό ν•©μ³μ„œ μž„μ‹œνŒŒμΌ X1을 λ§Œλ“ λ‹€. μ΄λ•Œ λΉ„μš© 60이 ν•„μš”ν•˜λ‹€. κ·Έ λ‹€μŒμœΌλ‘œ C1κ³Ό X1을 합쳐 μž„μ‹œνŒŒμΌ X2λ₯Ό λ§Œλ“€λ©΄ λΉ„μš© 100이 ν•„μš”ν•˜λ‹€. μ΅œμ’…μ μœΌλ‘œ X2와 C4λ₯Ό 합쳐 μ΅œμ’…νŒŒμΌμ„ λ§Œλ“€λ©΄ λΉ„μš© 150이 ν•„μš”ν•˜λ‹€. λ”°λΌμ„œ, μ΅œμ’…μ˜ ν•œ νŒŒμΌμ„ λ§Œλ“œλŠ”λ° ν•„μš”ν•œ λΉ„μš©μ˜ 합은 60+100+150=310 이닀. λ‹€λ₯Έ λ°©λ²•μœΌλ‘œ νŒŒμΌμ„ ν•©μΉ˜λ©΄ λΉ„μš©μ„ 쀄일 수 μžˆλ‹€. λ¨Όμ € C1κ³Ό C2λ₯Ό 합쳐 μž„μ‹œνŒŒμΌ Y1을 λ§Œλ“€κ³ , C3와 C4λ₯Ό 합쳐 μž„μ‹œνŒŒμΌ Y2λ₯Ό λ§Œλ“€κ³ , μ΅œμ’…μ μœΌλ‘œ Y1κ³Ό Y2λ₯Ό 합쳐 μ΅œμ’…νŒŒμΌμ„ λ§Œλ“€ 수 μžˆλ‹€. μ΄λ•Œ ν•„μš”ν•œ 총 λΉ„μš©μ€ 70+80+150=300 이닀.

μ†Œμ„€μ˜ 각 μž₯듀이 μˆ˜λ‘λ˜μ–΄ μžˆλŠ” 파일의 크기가 μ£Όμ–΄μ‘Œμ„ λ•Œ, 이 νŒŒμΌλ“€μ„ ν•˜λ‚˜μ˜ 파일둜 ν•©μΉ  λ•Œ ν•„μš”ν•œ μ΅œμ†ŒλΉ„μš©μ„ κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.


μž…λ ₯

ν”„λ‘œκ·Έλž¨μ€ ν‘œμ€€ μž…λ ₯μ—μ„œ μž…λ ₯ 데이터λ₯Ό λ°›λŠ”λ‹€. ν”„λ‘œκ·Έλž¨μ˜ μž…λ ₯은 T개의 ν…ŒμŠ€νŠΈ λ°μ΄ν„°λ‘œ 이루어져 μžˆλŠ”λ°, TλŠ” μž…λ ₯의 맨 첫 쀄에 μ£Όμ–΄μ§„λ‹€.각 ν…ŒμŠ€νŠΈ λ°μ΄ν„°λŠ” 두 개의 ν–‰μœΌλ‘œ μ£Όμ–΄μ§€λŠ”λ°, 첫 ν–‰μ—λŠ” μ†Œμ„€μ„ κ΅¬μ„±ν•˜λŠ” μž₯의 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ–‘μ˜ μ •μˆ˜ K (3 ≀ K ≀ 500)κ°€ μ£Όμ–΄μ§„λ‹€. 두 번째 ν–‰μ—λŠ” 1μž₯λΆ€ν„° Kμž₯κΉŒμ§€ μˆ˜λ‘ν•œ 파일의 크기λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ–‘μ˜ μ •μˆ˜ Kκ°œκ°€ μ£Όμ–΄μ§„λ‹€. 파일의 ν¬κΈ°λŠ” 10,000을 μ΄ˆκ³Όν•˜μ§€ μ•ŠλŠ”λ‹€.


좜λ ₯

ν”„λ‘œκ·Έλž¨μ€ ν‘œμ€€ 좜λ ₯에 좜λ ₯ν•œλ‹€. 각 ν…ŒμŠ€νŠΈ λ°μ΄ν„°λ§ˆλ‹€ μ •ν™•νžˆ ν•œ 행에 좜λ ₯ν•˜λŠ”λ°, λͺ¨λ“  μž₯을 ν•©μΉ˜λŠ”λ° ν•„μš”ν•œ μ΅œμ†ŒλΉ„μš©μ„ 좜λ ₯ν•œλ‹€.


κ·œμΉ™

  • νŒŒμΌμ€ ν•œλ²ˆμ— 2κ°œμ”©λ§Œ ν•©μΉ  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 파일둜 ν•˜λ‚˜λ‘œ ν•©μΉ  λ•Œ ν•„μš”ν•œ μ΅œμ†ŒλΉ„μš©μ„ μ°ΎμŠ΅λ‹ˆλ‹€.

μ‚¬μš© μ•Œκ³ λ¦¬μ¦˜ & κ·œμΉ™

  • νŒŒμΌμ€ ν•œλ²ˆμ— 2κ°œμ”©λ§Œ ν•©μΉ  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 파일둜 ν•˜λ‚˜λ‘œ ν•©μΉ  λ•Œ ν•„μš”ν•œ μ΅œμ†ŒλΉ„μš©μ„ μ°ΎμŠ΅λ‹ˆλ‹€.

풀이


"μ—°μ†λœ"νŒŒμΌμ„ μ–΄λ–€ "μˆœμ„œ"둜 합쳐야 "μ΅œμ†ŒλΉ„μš©"이 λ‚˜μ˜€λŠ”μ§€λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€.

2개의 μ—°μ†λœ νŒŒμΌμ„ ν•˜λ‚˜λ‘œ ν•©μΉ˜λŠ” 과정을 λ°˜λ³΅ν•˜μ—¬ 닡을 κ΅¬ν•©λ‹ˆλ‹€.



νŒŒμΌμ„ μœ„μ˜ κ΅¬κ°„μœΌλ‘œ λ‚˜λˆ„μ–΄μ„œ μƒκ°ν•©λ‹ˆλ‹€.

d[i][j] = d[i]~d[j]의 ν•© 쀑 μ΅œμ†Ÿκ°’μ„ μ°ΎμŠ΅λ‹ˆλ‹€.

d[i]~d[j]의 합은 μ•„λž˜ 3λΆ€λΆ„μœΌλ‘œ ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


1. d[i]~d[k]의 ν•© : d[i][k]

2. d[k+1]~d[j]의 ν•© : d[k+1][j]

3. file[i]~file[j]의 ν•©(즉, μž…λ ₯이 40,30,30,50 이라면 sum[]={0,40,70,100,150}; 이고, d[0]~d[j]의 합은 sum[j]μ—μ„œ sum[0]을 λΊ€ κ°’κ³Ό κ°™μŠ΅λ‹ˆλ‹€. sum[j]-sum[0]=150, λ§ˆμ°¬κ°€μ§€λ‘œ d[1]~d[j]의 합은 sum[j]-sum[1]=110이 λ©λ‹ˆλ‹€.)


κ²°κ΅­, 점화식은

d[i][j] = d[i][k] + d[k+1][j] + sum[j] - sum[i-1] μž…λ‹ˆλ‹€.


μ½”λ“œ(μ‹œκ°„ λ³΅μž‘λ„ : N^3)


λ°˜μ‘ν˜•
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ 동일쑰건 (μƒˆμ°½μ—΄λ¦Ό)

'πŸ€” PS(Problem Solving) > λ°±μ€€(BOJ)' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[λ°±μ€€/c++] 2240번 - μžλ‘λ‚˜λ¬΄  (0) 2019.09.20
[λ°±μ€€/c++] 11049번 - ν–‰λ ¬ κ³±μ…ˆ μˆœμ„œ  (0) 2019.08.17
[λ°±μ€€/c++] 1520번 - 내리막 κΈΈ  (1) 2019.08.11
[λ°±μ€€/c++] 2294번 - 동전2  (0) 2019.08.11
[λ°±μ€€/c++] 2293번 - 동전1  (0) 2019.08.11
    'πŸ€” PS(Problem Solving)/λ°±μ€€(BOJ)' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [λ°±μ€€/c++] 2240번 - μžλ‘λ‚˜λ¬΄
    • [λ°±μ€€/c++] 11049번 - ν–‰λ ¬ κ³±μ…ˆ μˆœμ„œ
    • [λ°±μ€€/c++] 1520번 - 내리막 κΈΈ
    • [λ°±μ€€/c++] 2294번 - 동전2
    Dev.Beth
    Dev.Beth
    Beth의 곡뢀 λΈ”λ‘œκ·Έ

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”