๐ง ๋ฐฑ์ค 2609 (์ต๋๊ณต์ฝ์, ์ต์๊ณต๋ฐฐ์)
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ
๐ค ์ต๋๊ณต์ฝ์, ์ต์๊ณต๋ฐฐ์๋ math ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ gcd, lcm ํจ์๋ฅผ ์ด์ฉํ์!
from math import gcd, lcm
๐คซ solution_2609from math import gcd, lcm x, y = map(int, input().split()) print(gcd(x,y), lcm(x,y), sep = "\n")
๐ง ๋ฐฑ์ค 1676 (factorial)
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ
๐ค ํฉํ ๋ฆฌ์ผ์ math ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ factorial ํจ์๋ฅผ ์ด์ฉํ์!from math import factorial
๐ค ๋ฌธ์์ด์ด๋ ๋ฆฌ์คํธ์ ๋ํ ๋ค์์์ ์ ๊ทผ์ reversed๋ฅผ ์ ์ฉํ์!for i in reversed(ans):
๐คซ solution_1676from math import factorial ans = str(factorial(int(input()))) cnt = 0 for i in reversed(ans): if i == '0': cnt += 1 else: break print(cnt)
๐ง ๋ฐฑ์ค 2004 (combination_์กฐํฉ)
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ
๐ค ์กฐํฉ๋ก ์ ์๋ฆฌ, ์ฆ ๋ณธ์ง์ ํ์ ์ด ์ฐ์ ์ด๋ค!
0์ ๊ฐ์ = min{ (M!์ด ๊ฐ์ง๋ 2์ ๊ฐ์ - N!์ด ๊ฐ์ง๋ 2์ ๊ฐ์ - (M-N)!์ด ๊ฐ๋ 2์ ๊ฐ์) / (M!์ด ๊ฐ์ง๋ 5์ ๊ฐ์ - N!์ด ๊ฐ์ง๋ 5์ ๊ฐ์ - (M-N)!์ด ๊ฐ๋ 5์ ๊ฐ์) }
๐คซ solution_2004 (์๊ฐ์ด๊ณผ)from math import factorial def combination(n, m): return factorial(n) // (factorial(m) * factorial(n-m)) n, m = map(int, input().split()) num = str(combination(n,m)) cnt = 0 for i in reversed(num): if i == '0': cnt += 1 else: break print(cnt)
๐คซ solution_2004M, N = map(int, input().split()) def countNum(N, num): cnt = 0 divNum = num while(N >= divNum): cnt = cnt + (N // divNum) divNum *= num return cnt # 0์ ๊ฐ์ = min(M!์ด ๊ฐ์ง๋ 2์ ๊ฐ์ - N!์ด ๊ฐ์ง๋ 2์ ๊ฐ์ - (M-N)!์ด ๊ฐ๋ 2์ ๊ฐ์ / M!์ด ๊ฐ์ง๋ 5์ ๊ฐ์ - N!์ด ๊ฐ์ง๋ 5์ ๊ฐ์ - (M-N)!์ด ๊ฐ๋ 5์ ๊ฐ์) print(min(countNum(M, 5) - countNum(N, 5) - countNum(M-N, 5), countNum(M, 2) - countNum(N, 2) - countNum(M-N, 2)))
๐ง ๋ฐฑ์ค 11051 (์ดํญ์ ๋ฆฌ)
๐คซ solution_2004
from math import factorial n, k = map(int, input().split()) print((factorial(n) // (factorial(k) * factorial(n - k))) % 10007)
์กฐํฉ์ ๊ฒฝ์ฐ n! / k! (n-k)! ์ผ๋ก ํํ์ด ๊ฐ๋ฅํ๊ธฐ์ ์์ ๊ฐ์ด ํํํ ์ ์๋ค.
๐ง ๋ฐฑ์ค 2981 (combination_์กฐํฉ) Gold IV
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ _ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ๐ค Algorithm
๋๋์ ์์ ๋ชซ๊ณผ ๋๋จธ์ง๊ฐ ์ด๋ป๊ฒ ๋์ค๋์ง, ๋ณธ์ง์ ํ์ ์ด ์ฐ์ ์ด๋ค!
์์ ์์ ์ ๋ ฅ 2์ ์ผ๋ถ๋ฅผ ์๋ก ๋ค์ด ์๊ณ ๋ฆฌ์ฆ ๊ณผ์ ์ ์ค๋ช ํด ๋ณด๊ฒ ๋ค.
# 17 = 5*(3) + '2' # 83 = 27*(3) + '2' # 3 = (number - 'rest')*๋ชซ # ์ฆ, ์ซ์ 2๊ฐ๋ฅผ ๋นผ์ฃผ๋ฉด? => ()๊ดํธ ๊ฐ์ ์ธ์๋ก ๊ฐ๋ ์ซ์๊ฐ ๋์ด # ex) 83-17 = 66์ ๊ณต์ฝ์ = 2 3 6 11 22 33 66 # ex) 17- 5 = 12์ ๊ณต์ฝ์ = 2 3 4 6 12 # ex) 17-14 = 3์ ๊ณต์ฝ์ = 3 # ์ฆ, ์ต์ข ์ ์ผ๋ก ์์ ๋ฆฌ์คํธ๋ค์ ๊ณต์ฝ์๋ 3์ด๋ฏ๋ก 3์ ์ถ๋ ฅํ๋ฉด ๋จ.
๐คAlgorithm ๊ณผ์
์์์ ์ค๋ช ํ ๋ฐ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์งํํ ๊ฒ์ด๋ค.
1. ์ ๋ ฅ๋ num๊ฐ์ ์ฐจ์ด๋ฅผ ์ ์ฅํ๋ num_interval ๋ฆฌ์คํธ๋ฅผ ์์ฑํด์ฃผ๊ณ ์ ์ฅํ๋ค.
2. ans๋ num_interval์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ์ฌ ๋ฃ์ด์ฃผ๊ธฐ ์ํ ๋ฆฌ์คํธ์ด๋ค.
3. gcd(*num_interval)์ ํตํด ๋ชจ๋ num_interval์ ์์๋ค์ ๋น๊ต, ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํด์ค๋ค.
4. ans์ ์ ์ฅ๋ 1์ ์ ์ธํ ์ฝ์๊ฐ ๋ต์ด ๋๋ฏ๋ก ์ฝ์๋ฅผ ๊ตฌํ๊ธฐ ์ํ divisorํจ์๋ฅผ ์ ์ธํด์ค๋ค.
5. divisorํจ์์์๋ 2๋ถํฐ n๊น์ง๋ฅผ ๋๋ฉด์ ๋๋จธ์ง๊ฐ 0์ด ๋ ๋, i๊ฐ์ appendํด์ค๋ค.
6. ์ด๋ ๊ฒ ๋ชจ์ธ answer ๋ฆฌ์คํธ๊ฐ ๋ฐ๋ก 1์ ์ ์ธํ ์ฝ์๊ฐ ์ ์ฅ๋์๋ ๋ฆฌ์คํธ์ด๋ค.
7. ์ด ํจ์์ ans์ ์ ์ฅ๋ ์ต๋๊ณต์ฝ์์ ์์๋ฅผ ๋ฃ์ด์ฃผ๊ณ ํจ์๋ก ๋์ถ๋ ๋ฆฌ์คํธ์ ์์๋ฅผ ๋ฝ์์ค๋ค.
๐คซ solution_2981from math import gcd N = int(input()) num = [int(input()) for _ in range(N)] num_interval = [] ans = [] for i in range(1, N): num_interval.append(abs(num[i] - num[i-1])) ans.append(gcd(*num_interval)) def divisor(n): answer = [] for i in range(2, n+1): if n%i == 0: answer.append(i) return answer print(*divisor(*ans))
๐ง ๋ฐฑ์ค 2877 (2์ง์) Gold V
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ _ format()
>>> format(42, 'b') # 2์ง์ '101010' >>> format(42, 'o') # 8์ง์ '52' >>> format(42, 'x') # 16์ง์ '2a
๐ค Algorithm
๐คซ solution_ 2877n = format(int(input()) + 1, 'b') # k+1 ์ซ์๋ฅผ 2์ง์('b')๋ก ๋ณํ print(n[1:].replace('0', '4').replace('1', '7'))
๐ง ๋ฐฑ์ค 1158 (์์ธํธ์ค ๋ฌธ์ )
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ _ deque
๐ค collections์ deque๋ฅผ ์ด์ฉํ์!
from collections import deque dq = deque() # dq์ ๋ค(์ค๋ฅธ์ชฝ)์ ๊ฐ ์ถ๊ฐ, ์ญ์ dq.append(num) dq.pop() # dq์ ์(์ผ์ชฝ)์ ๊ฐ ์ถ๊ฐ dq.appendleft(num) dq.popleft() # dq์์ ๊ฐ๋ค ํ์ (์ํ ํ๋ฅผ ์ด์ฉ) dq.rotate(์์) = ์์ ์นธ์ฉ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐ๋ฆฐ๋ค. dq.rotate(์์) = ์์ ์นธ์ฉ ์ผ์ชฝ์ผ๋ก ๋ฐ๋ฆฐ๋ค. print(dq) # deque([1, 2, 3, 4, 5]) dq.rotate(1) print(dq) # deque([5, 1, 2, 3, 4]) dq.rotate(-1) print(dq) # deque([1, 2, 3, 4, 5]) dq.rotate(-1) print(dq) # deque([2, 3, 4, 5, 1])
๐คซ solution_1158from collections import deque n, k = map(int, input().split()) dq = deque([i for i in range(1, n+1)]) ans = [] while dq: dq.rotate(-k+1) ans.append(dq.popleft()) # popleft: ๋ฑ์ ์(์ผ์ชฝ)๊ฐ ์ญ์ ํ ๋ฐํ print("<" + ", ".join(map(str, ans)) + ">")