PS

[λ°±μ€€] 2168 터널 μœ„μ˜ λŒ€κ°μ„  with Python

ν˜•μ€€_It's 2022. 2. 21. 17:23
728x90
λ°˜μ‘ν˜•

πŸ“Œ BOJ 2168 터널 μœ„μ˜ λŒ€κ°μ„ 

πŸ’‘ 쑰건

  1. ν•œ λ³€μ˜ 길이가 1cm인 μ •μ‚¬κ°ν˜• λͺ¨μ–‘μ˜ 타일이 μžˆλ‹€.
    이 타일듀을 κ°€λ‘œκ°€ xcm, μ„Έλ‘œκ°€ ycm인 μ§μ‚¬κ°ν˜• λͺ¨μ–‘μ˜ 벽에 λΉˆν‹ˆμ—†μ΄ λΆ™μ˜€λ‹€. x와 yλŠ” μ •μˆ˜μ΄λ‹€.

  2. μ§μ‚¬κ°ν˜•μ— λΆ™μ–΄ μžˆλŠ” x*y개의 타일 μ€‘μ—λŠ” λŒ€κ°μ„ μ΄ κ·Έλ €μ§„ 타일도 있고, κ·Έλ ‡μ§€ μ•Šμ€ 타일도 μžˆλ‹€.

  3. x*y개의 타일 μ€‘μ—μ„œ λŒ€κ°μ„ μ΄ κ·Έλ €μ Έ μžˆλŠ” νƒ€μΌμ˜ 개수λ₯Ό κ΅¬ν•˜λŠ” 문제.

  4. x와 yλŠ” 1,000,000,000 μ΄ν•˜μ˜ μžμ—°μˆ˜

  5. μˆ˜ν•™, μ •μˆ˜λ‘ , μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μœ ν˜•μ˜ 문제

πŸ–₯ μ†ŒμŠ€ μ½”λ“œ

from sys import stdin
from math import gcd
x, y = map(int, stdin.readline().split())
print(x + y - gcd(x, y))

πŸ”– 예제 및 μ‹€ν–‰κ²°κ³Ό

예제

8 12

μ‹€ν–‰κ²°κ³Ό

16

⌨️ 문제 풀이

  1. μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•κ³Ό κ΄€λ ¨λœ λ¬Έμ œμž…λ‹ˆλ‹€.

  2. λŒ€κ°μ„ μ΄ 꼭지점을 μ§€λ‚˜κ°€μ§€ μ•ŠλŠ” μ§μ‚¬κ°ν˜•μ˜ κ°œμˆ˜λŠ” x + y + 1
    λŒ€κ°μ„ μ΄ 꼭지점을 μ§€λ‚˜κ°€λŠ” μ§μ‚¬κ°ν˜•μ˜ κ°œμˆ˜λŠ” x + y - (점의 개수) - 1
    μž…λ‹ˆλ‹€.

  3. 점의 κ°œμˆ˜λŠ” gcd(x, y) - 1개 μž…λ‹ˆλ‹€.

  4. μš°λ¦¬λŠ” λŒ€κ°μ„ μ΄ 꼭지점을 μ§€λ‚˜κ°€λŠ” μ§μ‚¬κ°ν˜•μ˜ 개수λ₯Ό κ΅¬ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ—
    (2)번의 λ‘λ²ˆμ§Έ 곡식을 μ΄μš©ν•΄μ•Όν•˜λ©°, x + y - gcd(x + y) κ°€ μ„±λ¦½ν•œλ‹€.

  5. x + y - gcd(x + y) λ₯Ό 좜λ ₯ν•œλ‹€.

πŸ’Ύ λŠλ‚€μ 

  1. μˆ˜ν•™μ μΈ 지식이 λΆ€μ‘±ν•΄ μ–΄λ €μ› μŠ΅λ‹ˆλ‹€.
λ°˜μ‘ν˜•