πŸ› οΈ Tool/FE

[PS] μŠ€νƒ 자료 ꡬ쑰λ₯Ό μ‚¬μš©ν•˜λŠ” 게 효과적인 상황

seungineer = seungwoo + engineer 2024. 8. 21. 02:56

였늘 λ°±μ€€ 17298 '였큰수' 문제λ₯Ό ν’€λ©΄μ„œ λ“œλ””μ–΄(..!) μŠ€νƒ 자료 ꡬ쑰λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” μƒν™©μž„μ„ μ•Œ 수 μžˆλŠ” 직관을 얻을 수 μžˆμ—ˆλ‹€. μž¬κ·€, dynamic programmingμ—μ„œ 이런 직관을 μ–»κ³ , PS μ—­λŸ‰μ΄ μ•½κ°„ μ˜¬λΌκ°”λ‹€κ³  μ²΄κ°ν–ˆλ˜ 터라 κΈ°λΆ„ 쒋은 κΉ¨λ‹¬μŒμ΄μ—ˆλ‹€.

μŠ€νƒ 자료 κ΅¬μ‘°λŠ” μ–‘νŒŒ 껍질 같은 μƒν™©μ—μ„œ 쓰인닀.

λ°±μ€€ 9012 'κ΄„ν˜Έ'

μ •κΈ€ κ³Όμ • 쀑 μ½”μΉ˜λ‹˜κ»˜μ„œ ν•˜μ‹  말씀이닀. κ·Έλ•Œ λ‹Ήμ‹œμ—λŠ” λ°±μ€€ 9012 'κ΄„ν˜Έ'와 같은 문제λ₯Ό ν’€λ©΄μ„œ 어렴풋이 'λ¬Έμ œκ°€ μ–‘νŒŒ κ°™κΈ΄ ν•˜λ‹€' μ •λ„λ‘œ μƒκ°ν•˜κ³  끝났닀. 그런데 사싀은 더 큰 뜻이 μžˆμ—ˆλ‹€.

μ–‘νŒŒ '껍질'이라, μ–‘νŒŒ μ•ˆμ€ 관심이 μ—†λ‹€!

9012 'κ΄„ν˜Έ' λ¬Έμ œμ™€ 같이 μ˜¬λ°”λ₯΄κ²Œ κ΄„ν˜Έκ°€ λ‹«ν˜”λŠ”μ§€ 확인할 λ•Œλ₯Ό κ°€μ •ν•œλ‹€. (()(())) 이 case의 경우 κ°€μž₯ λ§ˆμ§€λ§‰μ— 빨간색 ')'으둜 λ‹«νžˆλ©° μ˜¬λ°”λ₯΄κ²Œ κ΄„ν˜Έκ°€ λ‹«ν˜”λ‹€κ³  νŒλ‹¨ν•˜κ²Œ λœλ‹€. 이 과정을 μˆœμ„œλŒ€λ‘œ μž‘μ„±ν•˜λ©΄ μ•„λž˜μ™€ κ°™λ‹€.

  1. 주어진 κ΄„ν˜Έλ“€μ˜ κ°€μž₯ μ™Όμͺ½μ—μ„œ λΆ€ν„° μˆœνšŒν•œλ‹€.
  2. μ—¬λŠ” κ΄„ν˜ΈλŠ” μŠ€νƒμ— λ„£λŠ”λ‹€(push).
  3. λ‹«λŠ” κ΄„ν˜Έκ°€ 였면 μŠ€νƒμ˜ κ°€μž₯ μƒλ‹¨μ˜ 것과 ν•œ μŒμ„ μ΄λ£¨λŠ”μ§€ ν™•μΈν•œλ‹€.
  4. ν•œ μŒμ„ 이루면 정상, 이루지 λͺ» ν•˜λ©΄ λΉ„μ •μƒμœΌλ‘œ νŒλ‹¨ν•œλ‹€.

3번 κ³Όμ •μ—μ„œ λΉ¨κ°• κΈ€μ”¨μ˜ κ΄„ν˜Έκ°€ (()(())) 이 κ΄„ν˜Έλ“€ 쀑 빨강색에 ν•΄λ‹Ήν•œλ‹€. 즉, 3번의 νŒλ‹¨ κ³Όμ •μ—λŠ” λΉ¨κ°• κ΄„ν˜Έ 속에 ν¬ν•¨λœ 검정에 λŒ€ν•œ νŒλ‹¨μ΄ μ—†λ‹€. '(μ–‘νŒŒ) μ•ˆμ€ λͺ¨λ₯΄κ² κ³ ~ 이 κ΄„ν˜Έ μ μ ˆν•΄? μ•ˆ ν•΄?'와 같은 상황이닀.

 

또 달리 이λ₯Ό μ΄ν•΄ν•˜λ©΄, κ²€μ • κ΄„ν˜Έ 뢀뢄이 μ–΄λ–€ ν˜•νƒœμ΄λ“  두 λΉ¨κ°• κ΄„ν˜Έκ°€ 정상인지 νŒλ‹¨ν•˜λŠ” κ³Όμ •(λ©”μ»€λ‹ˆμ¦˜)이 항상 λ™μΌν•˜λ‹€. 이럴 λ•Œ μŠ€νƒ 자료 ꡬ쑰λ₯Ό μ‚¬μš©ν•œλ‹€!

μ–‘νŒŒ μ•ˆμ—λŠ” 또 μ–‘νŒŒ '껍질'이 μžˆλ‹€.

κΉŒλ„ κΉŒλ„ λ‚˜μ˜€λŠ” 게 μ–‘νŒŒμΈ κ²ƒμ²˜λŸΌ 껍질이 ν’ˆλŠ” λ‚΄λΆ€μ—λŠ” 또 껍질이 μžˆλ‹€. μ•žμ„œ 봀던 (()(())) μ΄ caseλ₯Ό λ‹€μ‹œ ν•œ 번 보자. μœ„ μˆœμ„œμ˜ 1번 κ³Όμ •μ—μ„œ 인덱슀 1 μˆœμ„œλΌκ³  μƒκ°ν•˜λ©΄ μŠ€νƒμ— (( 이 담겨 μžˆμ„ 것이닀.

 

검은색 κ΄„ν˜ΈλŠ” 빨간색 κ΄„ν˜Έμ— 영ν–₯을 λ°›μ„κΉŒ? μ „ν˜€ μ•ˆ λ°›λŠ”λ‹€! μ–‘νŒŒ 껍질 μ•ˆμ˜ 또 λ‹€λ₯Έ μ–‘νŒŒ κ»μ§ˆμ€ λ³„κ°œμ˜ 일인 것이닀. 'λ‚΄ μ•žμ— μ–΄λ–€ λ†ˆμ΄ μ™”μ—ˆλ“ μ§€ 간에 λ‚˜λŠ” λ‚΄ 쑰건에 λ§žλŠ” 'ν•œ 녀석'과만 λ§Œλ‚˜λ©΄ λœλ‹€.'

 

또 달리 이λ₯Ό μ΄ν•΄ν•˜λ©΄, κ²€μ • κ΄„ν˜Έ λ°”κΉ₯ 뢀뢄이 μ–΄λ–€ ν˜•νƒœμ΄λ“  κ²€μ • κ΄„ν˜Έκ°€ 정상인지 νŒλ‹¨ν•˜λŠ” κ³Όμ •(λ©”μ»€λ‹ˆμ¦˜)이 항상 λ™μΌν•˜λ‹€. 이럴 λ•Œ μŠ€νƒ 자료 ꡬ쑰λ₯Ό μ‚¬μš©ν•œλ‹€! μ΄λ ‡κ²Œ 9012 'κ΄„ν˜Έ' 문제λ₯Ό μ΄ν•΄ν•˜κ³  μ•„λž˜ 문제λ₯Ό 보자.

boj.ma/17298/t og:image

λ‚˜λ³΄λ‹€ 였λ₯Έμͺ½μ— μžˆλŠ” λ‚˜λ³΄λ‹€ μž‘μ€ μˆ˜μ— 관심이 μ—†λ‹€.

7, 6, 3, 4, 3, 8의 μˆ˜μ—΄μ—μ„œ 빨강색 글씨인 7은 자기 뒀에 6이 μ˜€λ“  1이 μ˜€λ“  영ν–₯을 받지 μ•ŠλŠ”λ‹€. 즉, 빨간색 λ‚΄λΆ€μ˜ 검은색 뢀뢄이 μ–΄λ–€ ν˜•νƒœλ“  상관없닀. '(μ–‘νŒŒ) μ•ˆμ€ λͺ¨λ₯΄κ² κ³ ~ 이 숫자 μ μ ˆν•΄? μ•ˆ ν•΄?'와 같은 상황이닀.

λ‚˜λ³΄λ‹€ 였λ₯Έμͺ½μ— μžˆλŠ” μˆ˜λŠ” 또 λ‹€λ₯Έ μ–‘νŒŒ '껍질'이닀.

7, 6, 3, 4, 3, 8 μˆ˜μ—΄μ„ μˆœνšŒν•˜λŠ” κ³Όμ •μ—μ„œ 인덱슀 1 μˆœμ„œλΌκ³  μƒκ°ν•˜λ©΄ μŠ€νƒμ—λŠ” 7, 6이 담겨 μžˆμ„ 것이닀. 검정색 μˆ«μžλŠ” 빨간색 μˆ«μžμ— 영ν–₯을 λ°›λŠ”κ°€? μ „ν˜€ μ•ˆ λ°›λŠ”λ‹€. 즉, 'λ‚΄ μ•žμ— μ–΄λ–€ λ†ˆμ΄ μ™”μ—ˆλ“ μ§€ 간에 λ‚˜λŠ” λ‚΄ 쑰건에 λ§žλŠ” 'ν•œ 녀석'과만 λ§Œλ‚˜λ©΄ λœλ‹€.'에 ν•΄λ‹Ήν•œλ‹€.

 

μ—¬κΈ°μ„œ 쑰건은 '였큰수' λ¬Έμ œμ—μ„œλŠ” 'λ‚˜λ³΄λ‹€ 더 큰지?'μ˜€κ³ , κ΄„ν˜Έ λ¬Έμ œμ—μ„œλŠ” 'λ‚˜μ™€ μŒμ„ μ΄λ£¨λŠ”μ§€?'μ˜€λ‹€. 두 λ¬Έμ œκ°€ 일λ§₯상톡함을 μ•Œ 수 μžˆλ‹€.

 

μš°λ¦¬λŠ” 아와 같은 μƒν™©μ—μ„œ μ§κ΄€μ μœΌλ‘œ μŠ€νƒ 자료 ꡬ쑰λ₯Ό λ– μ˜¬λ¦¬λ©΄ λ˜λŠ” 것이닀.

1. 'μ•ˆμ€ λͺ¨λ₯΄κ² κ³ ~ 이거 μ μ ˆν•΄? μ•ˆ ν•΄?'
2. 'λ‚΄ μ•žμ— μ–΄λ–€ 녀석이 왔든지 간에 λ‚˜λŠ” λ‚΄ 쑰건에 λ§žλŠ” 'ν•œ 녀석'과만 λ§Œλ‚˜λ©΄ λœλ‹€.'