목록Study (18)
무제
import sysinput = sys.stdin.readlinen, m = map(int, input().split())def two_count(n): two = 0 while n != 0: n = n // 2 two += n return twodef five_count(n): five = 0 while n != 0: n = n // 5 five += n return fiveprint(min(two_count(n) - two_count(n - m) - two_count(m), five_count(n) - five_count(n - m) - five_count(m))) 이 문제도 못풀었다. 5의 지수만을 생각해서 풀었는데,..
import sysinput = sys.stdin.readlinet = int(input())dp = [[0 for _ in range(3)] for _ in range(100001)]dp[1] = [1, 0, 0]dp[2] = [0, 1, 0]dp[3] = [1, 1, 1]for i in range(4, 100001): dp[i][0] = (dp[i - 1][1] + dp[i - 1][2]) % 1000000009 dp[i][1] = (dp[i - 2][0] + dp[i - 2][2]) % 1000000009 dp[i][2] = (dp[i - 3][0] + dp[i - 3][1]) % 1000000009for _ in range(t): n = int(input()) p..
import sysinput = sys.stdin.readlinet = int(input())array = [0]*11for _ in range(t): n = int(input()) for i in range(1, n+1): if i == 1: array[i] = 1 elif i == 2: array[i] = 2 elif i == 3: array[i] = 4 else : array[i] = array[i-1] + array[i-2] + array[i-3] print(array[n]) DP를 사용한 기본 문제.수가 1씩 증가할때 마다 경우의 수가 얼마나 증..
1. 나의 풀이 통과한 풀이지만 모범답안을 보니 엉망이네import sysinput = sys.stdin.readlinen = int(input())array = [1]*501for i in range(1, n+1): array[i] = array[i-1]*ianswer = 0 while array[n] % 10 == 0: array[n] = array[n] // 10 answer +=1print(answer) 2. 좋은 풀이 와 10은 2x5이므로 5의 개수만 찾아내면 된다....범위가 500까지므로 5의 3제곱수까지만 계산해주면 된다 이걸 어케 생각하는거지...N = int(input())print(N//5 + N//25 + N//125)
import sysinput = sys.stdin.readlinenumber = [True] * 1000001# 소수 listfor i in range(2, int(len(number) ** 0.5) + 1): if number[i]: for j in range(2 * i, 1000001, i): number[j] = Falsewhile 1: n = int(input()) if n == 0: break for i in range(n - 3, 2, -2): if (number[i] == True) and (number[n - i] == True): print(f"{n} = {n-i} + {i}") ..
1. 10820 문자열 분석 파이썬에서는 input()은 EOF 에러를 발생시키기 때문에, except 를 통해 예외처리를 하여 정상적으로 프로세스를 종료sys.stdin.readline()은 빈문자열 발생으로 입력초과 발생... 와 이런 차이가 있었다니... import sys# input = sys.stdin.readlinewhile True: try: s = input() capital = 0 letter = 0 num = 0 space = 0 for i in s : if i.isupper(): capital += 1 elif i.islower(): ..
import sysinput = sys.stdin.readlinefrom collections import Countern = int(sys.stdin.readline())n_list = list(map(int, sys.stdin.readline().split()))n_counter = Counter(n_list)ngf= [-1]*nstack = [0]for i in range(1, n): while stack and n_counter[n_list[stack[-1]]] 오큰수에서 Counter를 사용할 수 있으면 쉽게 적용할 수 있는 문제였다
import sysinput = sys.stdin.readlinestr = input()stack = []count = 0for i in range(0, len(str)-1): if str[i] == '(': if str[i+1] == ')': count += len(stack) else: stack.append("(") count += 1 else: if len(stack) != 0 and str[i-1] != '(': stack.pop()print(count) 난 어려워서 틀렸는데, 쉬웠다고 하는 블로그 글들을 참고하니 죄다 틀린 코드다..(중간에 문제가 바뀌었나?)기..