μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- php νλ‘κ·Έλλ° μ λ¬Έ λ¬Έμ νμ΄
- μ€νλ§
- php νλ‘κ·Έλλ° μ λ¬Έ μ°μ΅λ¬Έμ
- μλ° μ€νλ§
- php νλ‘κ·Έλλ°
- php νλ‘κ·Έλλ° μ λ¬Έ μμ
- νλ¬ν°
- CμΈμ΄
- νμ λΆκΈ°
- νμ΄μ½ μΆμ²μΈμ½λ
- μ΅λ¨ κ²½λ‘
- μλ°
- spring
- SWEA
- λ°±μ€
- Flutter
- php νλ‘κ·Έλλ° μ λ¬Έ
- νμ΄μ½ μ΄λμ½λ
- C
- νμ΄μ½ μΉκ΅¬μ½λ
- νλ¬ν° κ°λ°νκ²½ μ€μ
- λ°°μ΄
- php νλ‘κ·Έλλ° μ λ¬Έ μ루μ
- νμ΄μ½ μΆμ²μΈ
- php νλ‘κ·Έλλ° μ λ¬Έ 3ν
- νμ΄μ¬
- JAVA SPRING
- php
- programmers
- Java
- Today
- Total
μ¬λ₯μ΄π»
[νμ΄μ¬/Python] λ°±μ€ 2609λ² μ΅λ곡μ½μμ μ΅μ곡배μ λ³Έλ¬Έ
[νμ΄μ¬/Python] λ°±μ€ 2609λ² μ΅λ곡μ½μμ μ΅μ곡배μ
ImJay 2023. 5. 8. 03:02[νμ΄μ¬/Python] λ°±μ€ 2609λ² μ΅λ곡μ½μμ μ΅μ곡배μ
λ¬Έμ
λ κ°μ μμ°μλ₯Ό μ λ ₯λ°μ μ΅λ 곡μ½μμ μ΅μ 곡배μλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μλ λ κ°μ μμ°μκ° μ£Όμ΄μ§λ€. μ΄ λμ 10,000μ΄νμ μμ°μμ΄λ©° μ¬μ΄μ ν μΉΈμ κ³΅λ°±μ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μλ μ λ ₯μΌλ‘ μ£Όμ΄μ§ λ μμ μ΅λ곡μ½μλ₯Ό, λμ§Έ μ€μλ μ λ ₯μΌλ‘ μ£Όμ΄μ§ λ μμ μ΅μ 곡배μλ₯Ό μΆλ ₯νλ€.
μμ μ λ ₯
24 18
μμ μΆλ ₯
6
72
νμ΄ 1
import sys
# νμ€ μ
λ ₯ λμ sys.stdin.readline()μ μ¬μ©νμ¬ μ
λ ₯ μλ ν₯μ
input = sys.stdin.readline
# λ κ°μ μ μλ₯Ό μ
λ ₯λ°μ n1, n2μ ν λΉ
n1, n2 = map(int, input().split())
# ν° κ°μ aμ, μμ κ°μ bμ ν λΉ
a = max(n1, n2)
b = min(n1, n2)
# bμ μ½μλ₯Ό μ°Ύμμ lst 리μ€νΈμ μΆκ°
lst = []
for i in range(1, b + 1):
if b % i == 0:
lst.append(i)
# lst 리μ€νΈμμ aμ μ½μμΈ κ°μ₯ ν° κ°μ μ°Ύμμ μΆλ ₯
for i in reversed(lst):
if a % i == 0:
print(i)
break
# λ μμ 곡배μλ₯Ό ꡬνλ κ³Όμ
cnt1 = 1
cnt2 = 1
while True:
if cnt1 * a == cnt2 * b: # λ μμ 곡배μλ₯Ό μ°ΎμΌλ©΄ μΆλ ₯νκ³ μ’
λ£
print(cnt1 * a)
break
elif cnt1 * a < cnt2 * b: # cnt1 * aκ° μμΌλ©΄ cnt1 μ¦κ°
cnt1 += 1
else: # cnt1 * aκ° ν¬λ©΄ cnt2 μ¦κ°
cnt2 += 1
μ΄ μ½λμ μκ° λ³΅μ‘λλ O(n log n)μ΄λ€.
max() ν¨μμ min() ν¨μ νΈμΆμ O(1) μκ°μ μνλλ€.
lst 리μ€νΈμλ bμ μ½μκ° μ μ₯λλ―λ‘, 리μ€νΈμ ν¬κΈ°λ bμ μ½μμ κ°μ(bμ μ½μμ μ΄ κ°μλ O(μ½μμ κ°μ))μ΄λ€. λ°λΌμ μ½μλ₯Ό μ°Ύλ for 루νμ μκ° λ³΅μ‘λλ O(μ½μμ κ°μ)κ° λλ€.
for i in reversed(lst): 루νμ μκ° λ³΅μ‘λλ μ½μμ κ°μμ κ΄λ ¨μ΄ μλ€. λ°λΌμ μ΄ λΆλΆμ μκ° λ³΅μ‘λλ O(μ½μμ κ°μ)μ΄λ€.
while 루νλ μ΅μ
μ κ²½μ° cnt1 * cnt2λ² λ°λ³΅λλ€. μ΄ λ£¨ν μμμ μνλλ λΉκ΅ μ°μ°(cnt1 * a == cnt2 * b, cnt1 * a < cnt2 * b)μ O(1) μκ°μ μνλλ€. λ°λΌμ while 루νμ μκ° λ³΅μ‘λλ O(cnt1 * cnt2)κ° λλ€.
cnt1κ³Ό cnt2λ while 루ν μμμ κ°κ° 1μ© μ¦κ°νλ―λ‘, μ΅μ
μ κ²½μ° cnt1κ³Ό cnt2μ μ΅λκ°μ aμ bμ μ°¨μ΄(|a-b|)μ΄λ€. λ°λΌμ while 루νμ μκ° λ³΅μ‘λλ O(a * b)κ° λλ€.
λ°λΌμ, μ΄ μ½λμ μ 체μ μΈ μκ° λ³΅μ‘λλ O(n log n) + O(n) + O(n) = O(n log n)μ΄λ€. (λ¨, nμ max(n1, n2)μ min(n1, n2) μ€ ν° κ°μ μλ―Ένλ€.)
μ΄ μ½λλ λ μμ μ΅λ곡μ½μμ μ΅μ곡배μλ₯Ό μ°Ύλ λ°μ μμ΄μ λΉκ΅μ κ°λ¨νκ³ μ§κ΄μ μΌλ‘ ꡬνλμ΄ μλ€. κ·Έλ¬λ ν° μμ λν΄μλ μ½μλ₯Ό μ°Ύλ λΆλΆμμ μκ° λ³΅μ‘λκ° μλΉν 컀μ§λ―λ‘, λ μκ° λ§€μ° ν° κ²½μ°μλ μ²λ¦¬ μλκ° λλ €μ§ μ μλ€. μ΄λ° κ²½μ°μλ λ³΄λ€ ν¨μ¨μ μΈ μκ³ λ¦¬μ¦μ μ¬μ©νλ κ²μ΄ μ’λ€.
νμ΄ 2
μ ν΄λ¦¬λ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ μ΅λ곡μ½μλ₯Ό ꡬν μ μλ€. μ ν΄λ¦¬λ μκ³ λ¦¬μ¦μ λ μμ μ΅λ곡μ½μλ₯Ό ꡬνλ μκ³ λ¦¬μ¦μΌλ‘, ν° μλ₯Ό μμ μλ‘ λλμ΄ λλ¨Έμ§λ₯Ό ꡬνκ³ , λλ¨Έμ§κ° 0μ΄ μλλ©΄ μμ μλ₯Ό λλ¨Έμ§λ‘, λλ¨Έμ§κ° 0μ΄λ©΄ κ·Έ λμ μμ μκ° λ μμ μ΅λ곡μ½μμ΄λ€.
μ΅μ곡배μλ λ μμ κ³±μ μ΅λ곡μ½μλ‘ λλ κ°μ΄λ€.
μλλ μ ν΄λ¦¬λ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ μ΅λ곡μ½μμ μ΅μ곡배μλ₯Ό ꡬνλ μ½λμ΄λ€.
import sys
input = sys.stdin.readline
n1, n2 = map(int, input().split())
# μ ν΄λ¦¬λ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ μ΅λ곡μ½μλ₯Ό ꡬν¨
a, b = n1, n2
while b != 0:
a, b = b, a % b
gcd = a
# μ΅μ곡배μλ₯Ό ꡬν¨
lcm = n1 * n2 // gcd
print(gcd)
print(lcm)
μ μ½λμ μκ° λ³΅μ‘λλ μ΅λ곡μ½μλ₯Ό ꡬνλ λΆλΆμμ O(log(min(n1, n2)))μ΄κ³ , μ΅μ곡배μλ₯Ό ꡬνλ λΆλΆμμλ O(1)μ΄λ€. λ°λΌμ μ 체μ μΈ μκ° λ³΅μ‘λλ O(log(min(n1, n2)))μ΄λ€. μ ν΄λ¦¬λ μκ³ λ¦¬μ¦μ λ μ μ€ μμ μμ λλ΅μ μΈ μλ¦Ώμμ λΉλ‘νλ νμλ§νΌμ μ°μ°μ μννκΈ° λλ¬Έμ, ν° μμμλ λΉ λ₯Έ μκ°μ μ΅λ곡μ½μλ₯Ό ꡬν μ μλ€.
μ°Έκ³ μλ£
'Solved.ac - Python > CLASS 2' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νμ΄μ¬/Python] λ°±μ€ 2798λ² λΈλμ (0) | 2023.05.08 |
---|---|
[νμ΄μ¬/Python] λ°±μ€ 2751λ² μ μ λ ¬νκΈ° 2 (2) | 2023.05.08 |
[νμ΄μ¬/Python] λ°±μ€ 2292λ² λ²μ§ (0) | 2023.05.07 |
[νμ΄μ¬/Python] λ°±μ€ 2231λ² λΆν΄ν© (0) | 2023.05.07 |
[νμ΄μ¬/Python] λ°±μ€ 2164λ² μΉ΄λ2 (0) | 2023.05.07 |