전체 글(108)
-
[BOJ] 백준 1059 좋은 구간 Python
import sys input = sys.stdin.readline N = int(input()) A = list(map(int,input().split())) target = int(input()) A.sort() cnt = 0 if min(A)
2023.10.27 -
[BOJ] 백준 2553 마지막 팩토리얼 수 Python
import sys import math input = sys.stdin.readline N = int(input()) result = 1 for i in range (1,N+1): result *= i while result % 10 == 0: result //= 10 result %= 100_000_000_000 result %= 10 print(result) 인터넷에 여럿 코드가 있었는데, 어째서인지 제것에서 구현할때는 잘 안되더라고요. 최대 길이 4300자를 넘어갔다고 떴던 것으로 기억합니다. 한편 알고리즘은 간단합니다. 파이썬 내장 함수 math로 구할 수 있는 것은 알고 있으나 각 product - attempt마다 10으로 나눈 나머지가 0이 되지 않을때까지 (즉, 0이 사라질때까지) whi..
2023.10.27 -
[BOJ] 백준 28353 고양이카페 Python
import sys import math input = sys.stdin.readline N, K = map(int,input().split()) A = list(map(int,input().split())) n = len(A) A.sort(reverse=True) cnt = 0 for a in A: m = A.index(a) A.remove(a) A.insert(m,K) for b in A: if a + b [22,20,8,5,3,1] 앞에서부터 25를 넘지 않게끔 다른 한 마리의 고양이를 선택 -> 고양이의 무게로서 3kg , 1kg가 가능하지만 이때는 3kg을 취한다. 이때, 22kg , 3kg의 고양이를 배제하는 방법으로서, 두 마리의 무게를 25kg으로 두고 cnt를 +1 시켜주자. (계산에서 ..
2023.10.27 -
[BOJ] 백준 1072 게임 Python
import sys import math from decimal import Decimal input = sys.stdin.readline X,Y = map(int,input().split()) Z = int(Decimal(Y* 100/X)) if Z == 99 or Z == 100: print(-1) else: a = Decimal((100*Y - X - Z*X)/(Z-99)) result = Decimal(int((100*Y - X - Z*X)/(Z-99)) ) if result - a == 0: print(result) else: print(result + 1) 역시 이런 문제는 부동소수점을 보았을 때 오차가 생길 수 있는데, 그것을 얼마나 "잘" 컨트롤 하느냐에 따른 것 같다. Decimal을 활..
2023.10.27 -
[BOJ] 백준 28294 프랙탈 Python
import sys input = sys.stdin.readline N, a = map(int,input().split()) ##거듭제곱을 한 결과의 modular 연산에 유용한 툴. 특히, prime number로 나누는 경우## def power(a, b): if b == 0: return 1 elif b == 1: return a tmp = power(a, b//2) if b%2 == 0: return tmp*tmp % 1_000_000_007 return tmp*tmp*a % 1_000_000_007 result = (N * (N-1) *(power(N,a) - power(N-1,a)) + power(N-1,a) * N) % 1_000_000_007 print(result) 항상 어떻게든 규칙성을..
2023.10.27 -
[BOJ] 백준 29203 자릿수 Python
import sys input = sys.stdin.readline import math a,b = map(int,input().split()) N = b * (math.log10(a)) N = int(N) + 1 print(N) 상용로그 함수를 사용하여 자릿수를 계산하는 간단한 문제입니다. 추가로 궁금하신 점이 있다면 말씀해 주세요.
2023.10.27