개발자 HOON
πŸ› HOON DEVLog
개발자 HOON
전체 방문자
였늘
μ–΄μ œ
  • 😎 전체 μΉ΄ν…Œκ³ λ¦¬ (137)
    • πŸ“ μ‹ μž… 인터뷰 μ€€λΉ„ (7)
    • πŸ¦” μ·¨μ—…μ€€λΉ„ 기둝 (7)
    • β˜• μžλ°” : JAVA (5)
    • 🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS (80)
    • 🌱 λ°±μ—”λ“œ : Backend (13)
    • πŸ§ͺ 컴퓨터과학 : CS (11)
    • πŸ—‚ λ°μ΄ν„°λ² μ΄μŠ€ : DB (1)
    • πŸƒ‍♂️ DEVLOG (8)
    • βš™οΈ Trouble Shooting (5)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • GitHub
  • Resume

곡지사항

인기 κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
개발자 HOON

πŸ› HOON DEVLog

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] λ©€μ©‘ν•œ μ‚¬κ°ν˜• (level2, python)
🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] λ©€μ©‘ν•œ μ‚¬κ°ν˜• (level2, python)

2023. 4. 11. 15:20

 

 

πŸ€” 풀이 μ½”λ“œ

 

import math

def solution(w,h):
    return w * h - (w + h - math.gcd(w, h))

 

 

πŸ€” 문제 풀이

 

μ½”λ“œκ°€ μ§§μ•„μ„œ μ‰¬μš΄ 문제처럼 λ³΄μ΄μ§€λ§Œ, μ™œ μ €λŸ° 식이 λ‚˜μ™”λŠ”μ§€ μ΄ν•΄ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

λ¬Έμ œμ—μ„œ λ‚˜μ˜¨ 이 μ˜ˆμ‹œλ₯Ό ν•œ 번 λ΄…μ‹œλ‹€.

 

 

κ°€λ‘œ 8, μ„Έλ‘œ 12의 μ‚¬κ°ν˜•μœΌλ‘œ, μΌμ •ν•œ νŒ¨ν„΄μ΄ λ°˜λ³΅λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

 

μœ„μ™€ 같은 κ°€λ‘œ 2, μ„Έλ‘œ 3의 μ‚¬κ°ν˜•μ˜ νŒ¨ν„΄μ΄ μ—¬λŸ¬ 번 λ°˜λ³΅λ˜λŠ” κ²ƒμ²˜λŸΌ 보이죠.

κ³„μ‚°ν•˜λ©΄, κ°€λ‘œ 8 μ„Έλ‘œ 12의 μ‚¬κ°ν˜•μ€, κ°€λ‘œ 2, μ„Έλ‘œ 3의 μ‚¬κ°ν˜•μ—μ„œ 선에 κ±Έλ¦¬λŠ” μ‚¬κ°ν˜•μ˜ 개수 * 4μž…λ‹ˆλ‹€.

μ—¬κΈ°μ„œ 4λΌλŠ” μˆ«μžλŠ”, 8κ³Ό 12의 μ΅œλŒ€ κ³΅μ•½μˆ˜μΈκ²ƒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ κ°€λ‘œ 2와 μ„Έλ‘œ 3은 μ„œλ‘œμ†Œ κ΄€κ³„μž„μ„ μ•Œ 수 있죠.

λ”°λΌμ„œ μ΅œλŒ€ κ³΅μ•½μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ 문제λ₯Ό ν’€μ–΄μ•Όκ² λ‹€λŠ” 생각을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

λ‹€μ‹œ λ³€μˆ˜λ‘œ λ°”κΏ”μ„œ 생각을 ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

κ°€λ‘œ w와 μ„Έλ‘œ h의 μ‚¬κ°ν˜•μ΄ 있고, μ΅œλŒ€κ³΅μ•½μˆ˜ kκ°€ μžˆλ‹€κ³  ν•΄λ΄…μ‹œλ‹€.

그러면 κ°€λ‘œ w, μ„Έλ‘œ h의 μ‚¬κ°ν˜•μ—μ„œ 각각 μ΅œλŒ€ κ³΅μ•½μˆ˜λ‘œ λ‚˜λˆˆ κ°€λ‘œ w'와 μ„Έλ‘œ h' μ‚¬κ°ν˜•μœΌλ‘œ λ§Œλ“€ 수 있겠죠.

 

이제 직선과, μ‚¬κ°ν˜•μ˜ 변이 λ§Œλ‚˜λŠ” 수λ₯Ό κ³„μ‚°ν•΄λ΄…μ‹œλ‹€.

 

 

μœ„μ˜ μ‚¬κ°ν˜•μ€ κ°€λ‘œ w', μ„Έλ‘œ h'인 μ‚¬κ°ν˜•μž…λ‹ˆλ‹€. λŒ€κ°μ„ μ„ κ·Έμ—ˆμ„ λ•Œ, 기쑴의 μ‚¬κ°ν˜•κ³Ό 선이 λ§Œλ‚˜λŠ” 변은,

κ°€λ‘œλ³€ h' - 1개, μ„Έλ‘œλ³€ w' - 1개만큼 λ§Œλ‚©λ‹ˆλ‹€. 그리고 μ΄λŸ¬ν•œ 변을 λŒ€κ°μ„ μ΄ κΏ°λš«μ–΄ λ‚˜κ°ˆ λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ μ‚¬κ°ν˜•μ„ λ§Œλ‚˜κ²Œ λ©λ‹ˆλ‹€.

첫 점을 κ³ λ €ν•΄μ„œ ν•œ 개λ₯Ό μΆ”κ°€ν•΄ 계산해보면, κ°€λ‘œ w', μ„Έλ‘œ h'의 μ‚¬κ°ν˜•μ—μ„œ λŒ€κ°μ„ κ³Ό λ§Œλ‚˜λŠ” μ‚¬κ°ν˜•μ˜ κ°œμˆ˜λŠ”,

(w' - 1) + (h' - 1) + 1 = w' + h' - 1이 λ‚˜μ˜΅λ‹ˆλ‹€.

 

그럼, 이제 κ°€λ‘œ w, μ„Έλ‘œ h의 μ‚¬κ°ν˜•μ˜ κ²½μš°λ„ λŒ€κ°μ„ κ³Ό λ§Œλ‚˜λŠ” μ‚¬κ°ν˜•μ˜ 개수λ₯Ό ꡬ할 수 μžˆμŠ΅λ‹ˆλ‹€. (w' + h' - 1)에 μ΅œλŒ€ κ³΅μ•½μˆ˜ kλ₯Ό κ³±ν•˜λ©΄ 되죠.

kw' + kh' - k = w + h - kκ°€ λ©λ‹ˆλ‹€.

 

λ”°λΌμ„œ λŒ€κ°μ„ κ³Ό κ²ΉμΉ˜μ§€ μ•ŠλŠ” μ‚¬κ°ν˜•μ˜ 개수λ₯Ό κ΅¬ν•˜λ €λ©΄,

w * h둜 전체 μ‚¬κ°ν˜•μ˜ 수λ₯Ό κ΅¬ν•œλ‹€μŒ, w + h - kλ₯Ό λΉΌμ£Όλ©΄ λ©λ‹ˆλ‹€.

μ½”λ“œλ‘œ λ°”κΎΈλ©΄,

import math

def solution(w,h):
    return w * h - (w + h - math.gcd(w, h))

μ΄λŸ¬ν•œ μ½”λ“œκ°€ μ™„μ„±λ©λ‹ˆλ‹€.

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

'🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μž…κ΅­μ‹¬μ‚¬ (level3, python)  (0) 2023.04.14
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 거리두기 ν™•μΈν•˜κΈ° (level2, python)  (0) 2023.04.11
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ—¬ν–‰κ²½λ‘œ (level3, python)  (1) 2023.04.11
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] λ””μŠ€ν¬ 컨트둀러 (level3, python)  (0) 2023.04.10
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ „λ ₯망을 λ‘˜λ‘œ λ‚˜λˆ„κΈ° (level2, python)  (0) 2023.04.10
    '🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μž…κ΅­μ‹¬μ‚¬ (level3, python)
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 거리두기 ν™•μΈν•˜κΈ° (level2, python)
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ—¬ν–‰κ²½λ‘œ (level3, python)
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] λ””μŠ€ν¬ 컨트둀러 (level3, python)
    개발자 HOON
    개발자 HOON
    쒋은 λ°±μ—”λ“œ μ—”μ§€λ‹ˆμ–΄κ°€ 되기 μœ„ν•œ 기둝을 λͺ¨μ•˜μŠ΅λ‹ˆλ‹€. # μ£Όλ‹ˆμ–΄ # λ°±μ—”λ“œ # 개발자

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