[๋ฌธ์ ๋งํฌ] ๐ https://www.acmicpc.net/problem/1934
์ค๋ช
A์ ๋ฐฐ์์ด๋ฉด์ B์ ๋ฐฐ์์ธ ์์ฐ์๋ฅผ A์ B์ ๊ณต๋ฐฐ์๋ผ๊ณ ํ๋ค. ์ด๋ฐ ๊ณต๋ฐฐ์ ์ค์์ ๊ฐ์ฅ ์์ ์๋ฅผ ์ต์ ๊ณต๋ฐฐ์๋ผ๊ณ ํ๋ค.
A์ B์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ผ.
ํ์ด
sol.1
for๋ฌธ์ผ๋ก 45000๋ถํฐ 1๊น์ง ์ผ์ผ์ด ๊ฒ์ฌํ๋ค. a์ b๋ฅผ i๋ก ๋๋ ๋๋จธ์ง๊ฐ 0์ผ ๋ ๋ชซ์ a์ b์ ๋ค์ ์ ์ฅํ๊ณ ๊ฒฐ๊ณผ๊ฐ์ i๋ฅผ ๊ณฑํด ๋์ ํ๋ค. for๋ฌธ์ด ์ข ๋ฃ๋๋ฉด a์ b์ ๊ณฑ์ ๋ค์ ๊ฒฐ๊ณผ๊ฐ์ ๊ณฑํ๋ฉฐ ์ ์ฅํ๋ค.
ํฐ ์๋ถํฐ ํ์ํ๋ ์ด์
for i in range(45000, 1, -1):
if a % i == 0 and b % i == 0:
- 45000๋ถํฐ 1๊น์ง ๊ฑฐ๊พธ๋ก ํ์ํ๋ ์ด์ ๋ ์ต๋๊ณต์ฝ์๋ฅผ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์ฐพ๊ธฐ ์ํจ์ด๋ค. ํฐ ์๋ถํฐ ์์ํ๋ฉด ๋ ์๋ฅผ ๋์์ ๋๋์ด ๋จ์ด์ง๋ ๊ฐ์ฅ ํฐ ๊ณต์ฝ์๋ฅผ ๋จผ์ ์ฐพ๊ฒ ๋๋ค.
- a์ b๊ฐ i๋ก ๋๋์ด ๋จ์ด์ง๋ค๋ฉด, ์ด๋ i๊ฐ ๋ ์์ ๊ณต์ฝ์๋ผ๋ ๋ป์ด๋ฉฐ, ์ด๋ ๊ฐ์ฅ ํฐ ๊ฐ๋ถํฐ ํ์ธํ๊ธฐ ๋๋ฌธ์ ์ฒซ ๋ฒ์งธ๋ก ์ฐพ๋ ๊ฐ์ด ๋ฐ๋ก ์ต๋๊ณต์ฝ์(GCD)์ด๋ค.
sol.2
๋ ์์ ๊ณฑ์ ๊ทธ ๋ ์์ ์ต๋๊ณต์ฝ์(GCD)๋ก ๋๋๋ฉด ์ต๋๊ณต์ฝ์(LCM)๊ฐ ๋๋ค. math ๋ชจ๋์ ์ด์ฉํ๋ค.
import math
math.gcd(a, b)
Solution
sol.1 (๋ฐ๋ณต๋ฌธ ์ด์ฉ)
t = int(input())
for _ in range(t):
a, b = map(int, input().split())
result = 1
for i in range(45000, 1, -1): #45000๋ถํฐ ๊ฑฐ๊พธ๋ก 2๊น์ง
if a % i == 0 and b % i == 0:
a /= i
b /= i
result *= i
result *= a * b
print(int(result))
๐ ๋ชซ์ ๊ตฌํ ๋ '/' ์ฐ์ฐ์ ๋ง๊ณ '//'๋ฅผ ์ฌ์ฉํ๋ฉด int๋ก ๋ณํํ์ง ์์๋ ๋๋ค.
sol.2 (math๋ชจ๋ ์ด์ฉ)
import math
t = int(input())
for _ in range(t):
a, b = map(int, input().split())
result = abs(a * b) // math.gcd(a, b)
print(result)
๐ abs() : ์ ๋๊ฐ
๐ฉ๐ป ํ๊ณ
๋ ์์ ๊ณฑ์ ์ต๋๊ณต์ฝ์๋ก ๋๋๋ฉด ์ต๋๊ณต๋ฐฐ์๊ฐ ๋๋ค๋ ๊ฑธ ์ด์ ์ผ ์์๋ค.. ๊ธฐ์ตํด๋์.
๊ทธ๋ฆฌ๊ณ ๋ชซ์ ๊ตฌํ ๋ '//'๋ฅผ ์ฌ์ฉํด์ผ doubleํ์ด ์๋ intํ์ผ๋ก ๋ฐํ๋๋ค๋ ๊ฒ๋ ์๊ฒ ๋๋ค.
'๐งฉ Algorithm > [BOJ] Bronze' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [BOJ] 2501. ์ฝ์ ๊ตฌํ๊ธฐ (Python/Bronze 3) (0) | 2024.11.15 |
|---|---|
| BOJ 10798๋ฒ : ์ธ๋ก์ฝ๊ธฐ (Python/์ํ/Bronze 1) (1) | 2024.10.15 |
| BOJ 2775๋ฒ : ๋ถ๋ ํ์ฅ์ด ๋ ํ ์ผ (Python/๊ตฌํ/Bronze 1) (0) | 2024.10.15 |
| BOJ 11721 : ์ด ๊ฐ์ฉ ๋์ด ์ถ๋ ฅํ๊ธฐ (Java/๊ตฌํ/Bronze 3) (0) | 2024.10.14 |
| BOJ 3009 : ๋ค ๋ฒ์งธ ์ (Java/๊ตฌํ/Bronze 3) (0) | 2024.10.14 |