λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ”₯ PS(Problem Solving) πŸ”₯/programmers

[programmers] μŠ€νƒν, μ‡ λ§‰λŒ€κΈ°

by dar0m! 2020. 7. 16.
 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ‡ λ§‰λŒ€κΈ°

μ—¬λŸ¬ 개의 μ‡ λ§‰λŒ€κΈ°λ₯Ό λ ˆμ΄μ €λ‘œ μ ˆλ‹¨ν•˜λ €κ³  ν•©λ‹ˆλ‹€. 효율적인 μž‘μ—…μ„ μœ„ν•΄μ„œ μ‡ λ§‰λŒ€κΈ°λ₯Ό μ•„λž˜μ—μ„œ μœ„λ‘œ 겹쳐 놓고, λ ˆμ΄μ €λ₯Ό μœ„μ—μ„œ 수직으둜 λ°œμ‚¬ν•˜μ—¬ μ‡ λ§‰λŒ€κΈ°λ“€μ„ μžλ¦…λ‹ˆλ‹€. μ‡ λ§‰λŒ€κΈ°μ™€ 레�

programmers.co.kr

 

문제

μ—¬λŸ¬ 개의 μ‡ λ§‰λŒ€κΈ°λ₯Ό λ ˆμ΄μ €λ‘œ μ ˆλ‹¨ν•˜λ €κ³  ν•©λ‹ˆλ‹€. 효율적인 μž‘μ—…μ„ μœ„ν•΄μ„œ μ‡ λ§‰λŒ€κΈ°λ₯Ό μ•„λž˜μ—μ„œ μœ„λ‘œ 겹쳐 놓고, λ ˆμ΄μ €λ₯Ό μœ„μ—μ„œ 수직으둜 λ°œμ‚¬ν•˜μ—¬ μ‡ λ§‰λŒ€κΈ°λ“€μ„ μžλ¦…λ‹ˆλ‹€. μ‡ λ§‰λŒ€κΈ°μ™€ λ ˆμ΄μ €μ˜ λ°°μΉ˜λŠ” λ‹€μŒ 쑰건을 λ§Œμ‘±ν•©λ‹ˆλ‹€.

- μ‡ λ§‰λŒ€κΈ°λŠ” μžμ‹ λ³΄λ‹€ κΈ΄ μ‡ λ§‰λŒ€κΈ° μœ„μ—λ§Œ 놓일 수 μžˆμŠ΅λ‹ˆλ‹€.
- μ‡ λ§‰λŒ€κΈ°λ₯Ό λ‹€λ₯Έ μ‡ λ§‰λŒ€κΈ° μœ„μ— λ†“λŠ” 경우 μ™„μ „νžˆ ν¬ν•¨λ˜λ„λ‘ λ†“λ˜, 끝점은 κ²ΉμΉ˜μ§€ μ•Šλ„λ‘ λ†“μŠ΅λ‹ˆλ‹€.
- 각 μ‡ λ§‰λŒ€κΈ°λ₯Ό 자λ₯΄λŠ” λ ˆμ΄μ €λŠ” 적어도 ν•˜λ‚˜ μ‘΄μž¬ν•©λ‹ˆλ‹€.
- λ ˆμ΄μ €λŠ” μ–΄λ–€ μ‡ λ§‰λŒ€κΈ°μ˜ μ–‘ 끝점과도 κ²ΉμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

(a) λ ˆμ΄μ €λŠ” μ—¬λŠ” κ΄„ν˜Έμ™€ λ‹«λŠ” κ΄„ν˜Έμ˜ μΈμ ‘ν•œ 쌍 '()'으둜 ν‘œν˜„ν•©λ‹ˆλ‹€. λ˜ν•œ λͺ¨λ“  '()'λŠ” λ°˜λ“œμ‹œ λ ˆμ΄μ €λ₯Ό ν‘œν˜„ν•©λ‹ˆλ‹€.
(b) μ‡ λ§‰λŒ€κΈ°μ˜ μ™Όμͺ½ 끝은 μ—¬λŠ” κ΄„ν˜Έ '('둜, 였λ₯Έμͺ½ 끝은 λ‹«νžŒ κ΄„ν˜Έ ')'둜 ν‘œν˜„λ©λ‹ˆλ‹€.

μœ„ 예의 κ΄„ν˜Έ ν‘œν˜„μ€ κ·Έλ¦Ό μœ„μ— μ£Όμ–΄μ Έ μžˆμŠ΅λ‹ˆλ‹€.
μ‡ λ§‰λŒ€κΈ°λŠ” λ ˆμ΄μ €μ— μ˜ν•΄ λͺ‡ 개의 쑰각으둜 μž˜λ¦¬λŠ”λ°, μœ„ μ˜ˆμ—μ„œ κ°€μž₯ μœ„μ— μžˆλŠ” 두 개의 μ‡ λ§‰λŒ€κΈ°λŠ” 각각 3κ°œμ™€ 2개의 쑰각으둜 잘리고, 이와 같은 λ°©μ‹μœΌλ‘œ 주어진 μ‡ λ§‰λŒ€κΈ°λ“€μ€ 총 17개의 쑰각으둜 μž˜λ¦½λ‹ˆλ‹€.

μ‡ λ§‰λŒ€κΈ°μ™€ λ ˆμ΄μ €μ˜ 배치λ₯Ό ν‘œν˜„ν•œ λ¬Έμžμ—΄ arrangementκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, 잘린 μ‡ λ§‰λŒ€κΈ° 쑰각의 총 개수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄μ£Όμ„Έμš”.

 

ν•΄κ²°

key point, '(' λŠ” μ‡ λ§‰λŒ€κΈ° μ‹œμž‘ or λ ˆμ΄μ €, ')'λŠ” λ ˆμ΄μ € or μ‡ λ§‰λŒ€κΈ°μ˜ 끝
  1. ν˜„μž¬ μ‡ λ§‰λŒ€κΈ° 개수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” cnt λ³€μˆ˜μ™€, 잘린 μ‡ λ§‰λŒ€κΈ° 쑰각의 총 개수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” answerλ³€μˆ˜κ°€ μžˆλ‹€.
  2. '('λ₯Ό λ§Œλ‚˜λ©΄ 무쑰건 cntλ₯Ό μ¦κ°€μ‹œν‚¨λ‹€.
    • μ‡ λ§‰λŒ€κΈ° μ΄κ±°λ‚˜ λ ˆμ΄μ €
  3. ')'λ₯Ό λ§Œλ‚˜λ©΄
    1. λ°”λ‘œ 이전 λ¬Έμžμ—΄μ΄ '('μ΄μ—ˆλ‹€λ©΄ → λ ˆμ΄μ €
      • μ‡ λ§‰λŒ€κΈ°κ°€ μ•„λ‹ˆλ―€λ‘œ cntλ₯Ό κ°μ†Œμ‹œν‚€κ³ 
      • answer에 cnt만큼의 쑰각을 μΆ”κ°€ν•œλ‹€.
    2. λ ˆμ΄μ €κ°€ μ•„λ‹ˆλΌλ©΄ μ‡ λ§‰λŒ€κΈ°μ˜ λμ΄λ―€λ‘œ
      • μ‡ λ§‰λŒ€κΈ°μ˜ κ°œμˆ˜κ°€ κ°μ†Œν•˜κ³  → cnt--
      • λ ˆμ΄μ € μ΄ν›„μ˜ 남은 μ‡ λ§‰λŒ€κΈ°λ₯Ό μΆ”κ°€ν•΄μ€€λ‹€. → answer++
  4. λ¬Έμžμ—΄ λκΉŒμ§€ λͺ¨λ‘ μ™„λ£Œν–ˆλ‹€λ©΄ answerλ₯Ό λ¦¬ν„΄ν•˜κ³  μ’…λ£Œν•œλ‹€.

 

μ½”λ“œ

λŒ“κΈ€