โ 2609 ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ โ
A, B = map(int,input().split())
a, b = A, B
GCD, LCM = 0, 0
while True:
if A == B:
GCD = A
print(GCD)
break
else:
if A >= B:
A = abs(A-B)
else:
B = abs(A-B)
print(a*b//GCD)
๐งโ๏ธ ์ต๋๊ณต์ฝ์, ์ต์๊ณต๋ฐฐ์ ์ ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ!
โ math module - gcd, lcm
import math
a, b = map(int, input().split())
print(math.gcd(a, b))
print(math.lcm(a, b))
โก ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ ์ฌ์ฉ
→ ํด๊ฒฐ๋ฒ์ function ์ฌ์ฉ - ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด, ํด๋น ํจ์์ ์ถ๋ ฅ๊ฐ๋ง ๋ฆฌํดํด์ฃผ๊ณ , ๋งค๊ฐ๋ณ์๋ก ๋ฃ์ A์ B๋ ๋ณํ์ง ์๋๋ค. GCD์ LCM ๊ฐ๊ฐ ํจ์๋ฅผ ์ฌ์ฉํด ์ฝ๋ฉํ๋ฉด ๋จ
a, b = map(int, input().split())
def gcd(a, b):
while b > 0:
a, b = b, a % b
return a
def lcm(a, b):
return a * b // gcd(a, b)
print(gcd(a, b))
print(lcm(a, b))
โ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ) a๋ฅผ b๋ก ๋๋ ๋๋จธ์ง๋ฅผ r์ด๋ผ ํ๋ฉด, a์ b์ ์ต๋๊ณต์ฝ์๋ b์ r์ ์ต๋๊ณต์ฝ์ โ
(1) function gcd)
→ ํ ์ชฝ ์ b๊ฐ 0์ด ๋ ๋๊น์ง ๊ณ์ํด์ ๋๋๊ณ ๋์จ ๋๋จธ์ง๋ฅผ a์ ๊ณ์ ์ ์ฅํด, a์ 0์ด ๋๋ b๊ฐ ๋์ฌ ๋, a๊ฐ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ค.
a, b = b, a%b
(2) function lcm)
→ gcd๋ฅผ ๊ตฌํ๋ค๋ฉด, ๋ ์๋ฅผ ๊ณฑํด ์ต๋๊ณต์ฝ์๋ก ๋๋ ๊ฒฐ๊ณผ๊ฐ ์ต์๊ณต๋ฐฐ์ (A x B = G x L)
โข ๊ณต์ฝ์ ์ค ์ต๋๊ฐ
a, b = map(int, input().split())
tmp = []
for i in range(1, min(a,b) + 1):
if a % i == 0 and b % i == 0:
tmp.append(i)
print(max(tmp))
print(max(tmp) * (a // max(tmp)) * (b // max(tmp)))
→ ๋๋, ์ต์๊ฐ 1๋ถํฐ ์์ํ๋๊ฒ ์๋๋ผ, ์ด์ฐจํผ '์ต๋๊ฐ'์ ๊ตฌํ๋ ๊ฒ์ด๋ฏ๋ก, ๋ ์ ์ค ํ ์ b๋ถํฐ ๊ฑฐ๊พธ๋ก ์์ํด ๊ณต์ฝ์๋ฅผ ์ฐพ์๋ด, ์ฐพ์ผ๋ฉด ๋ฐ๋ก ์ต๋๊ณต์ฝ์๊ฐ ๋์ด ์ ์
import sys
input = sys.stdin.readline
a, b = map(int, input().split())
for i in range(b, 0, -1):
if a % i == 0 and b % i == 0:
print(i)
print(i * a // i * b // i)
exit()
โฃ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ - ์ฌ๊ทํจ์ ์ฌ์ฉ
→ a์ b์ b์ a%b๋ฅผ ๋ฃ๋ ๊ฒ์ผ๋ก, gcd ํจ์๋ฅผ ๋ง๋ค๊ณ return๋ฌธ์ gcd(b, a%b)๋ฅผ ๋ฃ์ด b๊ฐ 0์ด ๋ ๋๊น์ง ๊ณ์ ํจ์๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๋ฐ๋ณตํ๊ฒ!
a, b = map(int, input().split())
def gcd(a, b):
if b == 0:
return a
return gcd(b, a % b)
print(gcd(a, b), a*b//gcd(a, b))
โ 1037 ์ฝ์ โ
N = int(input())
divisors = list(map(int, input().split()))
n = sorted(divisors)
print(n[0] * n[len(n)-1])
โ 1934 ์ต์๊ณต๋ฐฐ์ โ
import sys
input = sys.stdin.readline
for _ in range(int(input())):
A, B = map(int, input().split())
a,b=A,B
while b!= 0:
a,b=b,a%b
print(A*B//a)
๐งโ๏ธ ์ต๋๊ณต์ฝ์ & ์ต์๊ณต๋ฐฐ์ & ๋ ์์ ๊ด๊ณ
→ ๋ ์ A์ B๊ฐ ์๊ณ , ๋ ์์ ์ต๋๊ณต์ฝ์๋ฅผ G, ์ต์๊ณต๋ฐฐ์๋ฅผ L์ด๋ผ ํ ๋ค, A๋ฅผ G๋ก ๋๋ ๋ชซ์ a, B๋ฅผ G๋ก ๋๋ ๋ชซ์ b๋ผ ํ๋ฉด
โ L = G * a * b โ
โ L * G = A * B โ
๐งโ๏ธ math ์ฌ์ฉ์ด ์๋ ๊ฒฝ์ฐ, ์์ ๊ฐ์ด ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ผ๋ก G๋ฅผ ๊ตฌํ ๋ค, ์ L๊ณผ G์ ๊ณต์์ ์ํด L์ ๊ตฌํ๋ฉด ์๊ฐ์ด๊ณผ ์์ด ๋น ๋ฅธ ์๊ฐ ๋ด์ ์ฝ๋๊ฐ ๋์๊ฐ๋ ๊ฑธ ํ์ธ ๊ฐ๋ฅ
โ 15633 Fan Death โ
n = int(input())
res = 0
for i in range(1,int(n**(1/2))+1,1):
if n%i == 0:
res += i
if i != n**(1/2):
res += (n//i)
print(res*5-24)
๐งโ๏ธ ์ฃผ์ด์ง ์์ ์ฝ์์ ํฉ์ ๊ตฌํ๋ ๋ฌธ์
→ 1๋ถํฐ ์ฃผ์ด์ง ์ ๋๊น์ง ๋๋ค๋ฉด ์๊ฐ ํจ์จ์ฑ์์ ๋นํจ์จ์ ์ด๋ผ ํ๋จํ์ฌ ์ฃผ์ด์ง ์์ ์ ๊ณฑ๊ทผ ๋ฒ์๊น์ง๋ง ๋๊ฒ ํ์๋ค.
โ range()์ ์ํด n**(1/2)๋ฅผ int()ํ๋ค์, 1์ ๋ํด ์ ํํ for๋ฌธ์ด int(n**(1/2))๊น์ง๋ง ๋ ์ ์๊ฒ ํ๋ค.
โก ๋ง์ฝ ์ ๊ณฑ์์ผ ๊ฒฝ์ฐ ๋ ๋ฒ ์นด์ดํธ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด i != n**(1/2) ์กฐ๊ฑด์ ๊ฑด๋ค.
(โป์ด ๋, i != int(n**(1/2))์ผ ๊ฒฝ์ฐ ์ ๊ณฑ์๊ฐ ์๋์๋ ์กฐ๊ฑด์ด True๋๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก (ex) 3์ ์ฝ์ 1) int๋ ๋ฐ๋์ ์ ์ธ!)
โ 6030 Scavenger Hunt โ
P,Q=map(int,input().split())
Ps = [i for i in range(1,P+1) if P%i == 0]
Qs = [i for i in range(1,Q+1) if Q%i == 0]
for p in Ps:
for q in Qs:
print(p,q)
โ 9506 ์ฝ์๋ค์ ํฉ โ
while 1:
n=int(input())
if n==-1:break
end=int(n**(1/2))
l=[]
for i in range(2,end+1):
if n%i==0:
l.extend((i,n//i))
l.append(1)
if sum(l)==n:
l.sort()
print(n,'=',end=' ')
print(*l,sep=' + ')
else:print(f'{n} is NOT perfect.')
๐งโ๏ธ ์ ์ฒด๋ฅผ ๋์ง ์๊ณ ์์ root๋ฒ์๊น์ง๋ง ๋์ ์ฝ์์ธ์ง ํ๋จ
โ 6888 Terms of Office โ
X=int(input())
Y=int(input())
for i in range(X,Y+1,60):
print(f'All positions change in year {i}')
๐งโ๏ธ๋งค 4๋ , 2๋ , 3๋ , ๊ทธ๋ฆฌ๊ณ 5๋ ์ ์ฃผ๊ธฐ๋ฅผ ๊ฐ๋ ์ ์ถ ์ฌ์ดํด์์ ์ด๋ค ํด๊ฐ ๋์์ ๋ฝ๋ ์ง ์์๋ณด๋ ๋ฌธ์ . 4, 2, 3, 5์ ์ต์๊ณต๋ฐฐ์์ธ 60๋ ์ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง ๋ ํด๋น๋๋ค.
โ 14682 Shifty Sum โ
print(int(input())*int('1'*(int(input())+1)))
๐งโ๏ธ ๋จ์ ๋ฐ๋ณต๋ฌธ์ผ๋ก๋ ํ ์ ์์ง๋ง, shitfy sum์ ์ฑ์ง์ ์ด์ฉํด ์ ์๋ก ๊ด์ ์ผ๋ก ํด๊ฒฐํด๋ณด๋ฉด, ๋์ผํ ์๊ฐ ์ผ์ชฝ์ผ๋ก ํ ์นธ์ฉ ์์ง์ด๋ฏ๋ก ํ ์นธ์ฉ ์์ง์ผ ๋๋ง๋ค ๋์ผํ ์์ 10๋ฐฐ๋งํผ ํด๋น ์๊ฐ ์ปค์ง๋ค. ๋ฐ๋ผ์ x๋ฒ ์ด๋ํ๋ค๋ฉด 1์ด x๋ฒ ์๊ณ ๋งจ ๋ง์ง๋ง ์๊ฐ 0์ธ ๋ฐฐ์๋งํผ ๊ณฑํด์ง
๐งโ๏ธ์ถ๊ฐ๋ก, ๋ ์์ ๋ ๋ํด์ ธ์ผ ํ๋ฏ๋ก ์ฌ๊ธฐ์ 1์ ๋ํจ → ๊ฒฐ๊ณผ์ ์ผ๋ก 1์ด (x+1)๊ฐ๋ก ๊ตฌ์ฑ๋ ์๋งํผ ๊ณฑํด์ง
โ 8678 Zbiór โ
import sys
input=sys.stdin.readline
for _ in range(int(input())):
a,b=map(int,input().split())
if b%a==0:print('TAK')
else: print('NIE')
๐งโ๏ธ a์ ๋ชจ๋ ์ฝ์๋ b์ ๋ชจ๋ ์ฝ์์ ํฌํจ๋๋ค๋ ๊ฑด, a๊ฐ b์ ๋๋ ์ง๋ค๋ ๋ป. b๋ฅผ a๋ก ๋๋ ๋๋จธ์ง๊ฐ 0์ด๋ค.
โ 27465 ์์๊ฐ ์๋ ์ โ
print(10**9)
๐งโ๏ธ 10์ 9์น์ ๋ฌด์กฐ๊ฑด ์์๊ฐ ์๋๋ฏ๋ก ํญ์ ๋ต์ด ๋จ!
โ 5086 ๋ฐฐ์์ ์ฝ์ โ
while 1:
a,b=map(int,input().split())
if (a,b) == (0,0): break
if b%a == 0: print('factor')
elif a%b == 0: print('multiple')
else: print('neither')
โ 11653 ์์ธ์๋ถํด โ
N=int(input())
def isPrime(n):
end=int(n**(1/2))
for i in range(2,end+1):
if n%i==0:
return False
return True
if N==1:
pass
else:
ans=[]
x=2
while N>1:
if len(ans) != 0 and N%ans[-1] == 0:
late_prime = ans[-1]
ans.append(late_prime)
N//=(late_prime)
else:
if N%x == 0:
if isPrime(x):
ans.append(x)
N//=x
x+=1
print(*ans,sep='\n')
๐งโ๏ธ ์์ธ์๋ถํด๋ ์์์ ๊ณฑ์ผ๋ก ํํ๋๊ฒ๋ ์ฃผ์ด์ง ์๋ฅผ ์์๋ก๋ง ํํํ๋ ๋ถํด์ด๋ค.
๐งโ๏ธ ์์ ๊ฐ์ด ๋๋์ด์ง๋ ์ง, ์์์ธ์ง ํ์ธํ ๋ค์ 1์ฉ ๋ํด๊ฐ๋ฉฐ ์ผ์ผ์ด ํ์ธํ๋ ๊ณผ์ ๋ ์๋ค.
๐งโ๏ธ+ ์๊ฐ ๋จ์ถ ํ์ด + (์์ธ์๋ถํด ํ์ด ๋ฐ๋์ ๊ธฐ์ต!) ๐งโ๏ธ
1) 2๋ถํฐ sqrt{N}๊น์ง ํ์ธ (2๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ธํ๋ฉด ์์์ธ์ง ํ์ธํ ํ์ x)
2) ๋ง์ฝ ๋๋์ด์ง๋ค๋ฉด, ๋์ผํ ์๋ก ๊ณ์ ๋๋ ์ ์๋ ์ง while๋ฌธ์ผ๋ก ํ์ธ
3) root๊น์ง ํ์ธํ์์ผ๋ฏ๋ก ์ต์ข ๊ฒฐ๊ณผ๊ฐ ๋ง์ฝ 1์ด ์๋๋ผ๋ฉด ํฐ ์์๊ฐ ํ๋ ๋จ์ ๊ฒ์ด๋ฏ๋ก ๋ง์ง๋ง ๊ฐ์ฅ ํฐ ์์ธ์ ์ถ๋ ฅํ๊ณ ๋
(๋ ํฐ ์์ ์์ธ์๋ถํด๋ euler sieve ํ์ฉ: ๋ณ๋ ํฌ์คํ ์ฐธ์กฐ)
n = int(input())
for i in range(2, int(n**0.5)+1):
while n%i == 0:
n //= i
print(i)
if n!=1:print(n)
โ 1145 ์ ์ด๋ ๋๋ถ๋ถ์ ๋ฐฐ์ โ
๐งโ๏ธ์ธ ์์ ์ต์๊ณต๋ฐฐ์๋ (1)๊ณผ (2)์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ ๊ฒฐ๊ณผ์ (3)๊ณผ์ ์ต์๊ณต๋ฐฐ์
๐งโ๏ธ ์ฆ, N๊ฐ์ ์ต์๊ณต๋ฐฐ์๋ (1)๊ณผ (2)์ ์ต์๊ณต๋ฐฐ์ ๊ตฌํ ๊ฒฐ๊ณผ์ (3)๊ณผ์ ์ต์๊ณต๋ฐฐ์ - ๊ทธ ๋ค์ ๊ตฌํ ๊ฒฐ๊ณผ์ (4)์์ ์ต์๊ณต๋ฐฐ์ .. ์ด๋ ๊ฒ ๊ณ์ update
import math
from itertools import combinations
def lcm(a,b):
return (a*b)//(math.gcd(a,b))
l=list(map(int,input().split()))
ans=1000000
for numbers in combinations(l,3):
a,b,c=numbers
x = lcm(lcm(a,b),c)
ans=min(ans,x)
print(ans)
* 1000000๋ก ans ์ด๊ธฐ๊ฐ ์ค์ - combinations()๋ก ์ธ ์์ฉ choice - ans update
* ๋ ์์ ์ต์๊ณต๋ฐฐ์ = (๋ ์์ ๊ณฑ) / (๋ ์์ ์ต๋๊ณต์ฝ์)
โ 1978 ์์ ์ฐพ๊ธฐ โ
โ 2๋ถํฐ (์๊ธฐ์์ -1) ๊น์ง์ ๋ชจ๋ ์๋ฅผ ์๊ธฐ์์ ์์ ๋๋์์ ๋ ๋๋จธ์ง๊ฐ ๋ชจ๋ 0์ด ์๋๋ค. O(N)
→ ๋๋จธ์ง๊ฐ ๋ชจ๋ 0์ด ์๋ ์์ ๊ฐ์๊ฐ (์๊ธฐ์์ -2)๋ผ๋ฉด ์์
result = 0
N = int(input())
for number in list(map(int, input().split())):
cnt = 0
for j in range(2,number):
if number%j != 0:
cnt += 1
if cnt == (number -2):
result += 1
print(result)
โก ์ฝ์์ ๊ฐ์๊ฐ 2์ด๋ค O(N)
r=0
input()
for n in list(map(int,input().split())):
l = [j for j in range(1,n+1) if n%j==0]
if len(l) == 2 : r+=1
print(r)
โข N์ ์ ๊ณฑ๊ทผ๊น์ง๋ง ๊ฒ์ฌ O(\sqrt{N})
→ ์ฝ์๋ N์ ์ ๊ณฑ๊ทผ๊น์ง๋ง ๋๋์ด์ง๋ ์ง ๊ฒ์ฌํ๋ฉด ๋จ. (์ฝ์๋ N์ ์ ๊ณฑ๊ทผ ๋ฒ์ ๋ด์์ ๋ฐ๋์ ์กด์ฌํ๋ฏ๋ก ๋ฒ์ ํ์ ์๊ฐ ํจ์จ์ ์ผ๋ก ์ค์ผ ์ ์์)
→ ๋ค๋ง N์ ์ฝ์์ ๊ฐ์๊ฐ 2๊ฐ ์๋ 1๋ก ํ๋ณํด์ผ ํ๊ณ , 1์ ์์๊ฐ ์๋๋ฏ๋ก 1๋ง ์นด์ดํธ์์ ์ ์ธํ๋ ์ ์ ์ฃผ์!
r=0
input()
for n in list(map(int,input().split())):
if n == 1:
continue
l=[j for j in range(1,int(n**(1/2))+1)if n%j==0]
if len(l)==1:r+=1
print(r)
→ ์ ๊ณฑ๊ทผ๊น์ง๋ง ๊ฒ์ฌํด์ 72ms → 68ms๋ก ์๊ฐ ์์ ๋ํจ!
โฃ N/2๊น์ง๋ง ๊ฒ์ฌ O(N)
→ โข์ ๋นํด ์๊ฐ๋ณต์ก๋๋ ๋ ์์๋์ง๋ง, ์ผ์ผ์ด N๊น์ง ๊ฒ์ฌํ๋ ํ์ด์ ๋นํด์ ํจ์ฌ ํจ์จ์ !
→ N์ ์ฝ์๋ ์ต๋ N/2 ๋ฒ์ ์ด๋ด์๋ง ๋ค์ด๊ฐ ์์์ ์๋ค๋ ์กฐ๊ฑด ํ์ ์งํํ๋ ํ์ด์ด๋ค.
โค ์๋ผํ ์คํ ๋ค์ค์ ์ฒด
๐ ์์ ํ๋ณํ๋ฉด ๋ฌด์กฐ๊ฑด ์์์ผ ํ๋ ํ๋ณ๋ฒ! ์ถํ ๋ฌธ์ ๋ก ์ค๋ช ์์
โฅ ์์๋ 2 ๊ทธ๋ฆฌ๊ณ 3 ๊ทธ๋ฆฌ๊ณ 6์ผ๋ก ๋๋ ๋๋จธ์ง๊ฐ 1๋๋ 5์ด๋ค.
→ ๋ชจ๋ ์์ฐ์๋ 6k, 6k+1, 6k+2, 6k+3, 6k+4, 6k+5๋ก ๋ํ๋ผ ์ ์๊ณ , ์ฌ๊ธฐ์ 6k+1๊ณผ 6k+5 ์ ์ธ ๋ค๋ฅธ ํํ๋ 2๋๋ 3์ผ๋ก ๋๋์ด์ง๋ ๊ฒ์ ํ์ธํ ์ ์์ผ๋ฏ๋ก ์์๊ฐ ์กด์ฌํ๋ค๋ฉด 6์ผ๋ก ๋๋ ๋๋จธ์ง๊ฐ 1๋๋ 5์ผ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ 2์ 3๋ง ๋ฐฐ์ ํ๋ค.
r=0
input()
for n in list(map(int,input().split())):
if n == 1: continue
if n%6 in [1,5] or n in [2,3]:
l=[j for j in range(1,int(n**(1/2))+1)if n%j==0]
if len(l)==1:r+=1
print(r)
โ 2581 ์์ โ
import math
def is_prime(n):
if n == 1:
return False
for j in range(2,int(math.sqrt(n))+1):
if n%j==0:
return False
return True
M=int(input())
N=int(input())
flag,ans,least=0,0,0
for i in range(M,N+1):
if is_prime(i):
ans+=i
if flag==0:
least=i
flag+=1
if least==0:print(-1)
else:print(ans,least,sep='\n')
'BOJ > ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ Basics II - 50 Solvedโ (0) | 2022.09.08 |
---|---|
โ Implementation Beginner I - 50 Solvedโ (0) | 2022.08.22 |
โ Implementation Basics II - 24 Solvedโ (0) | 2022.08.17 |
โ Math Beginner I - 30 Solvedโ (0) | 2022.08.16 |
โ Implementation Basics I - 50 Solvedโ (0) | 2022.08.04 |
๋๊ธ