목록문제/백준_파이썬 (155)
sm 기술 블로그
import sys input = sys.stdin.readline n, m = map(int, input().split()) def fiveCnt(x): cnt = 0 while x >= 5: cnt += x//5 x //= 5 return cnt def twoCnt(x): cnt = 0 while x >= 2: cnt += x//2 x //= 2 return cnt print(min(fiveCnt(n)-fiveCnt(n-m)-fiveCnt(m), twoCnt(n)-twoCnt(n-m)-twoCnt(m))) 문제요약 이항계수를 구한 값에서 뒤부터 0이 아닌 숫자가 나올 때까지 0은 몇번 나오는가? 설명 이 문제는 조합을 먼저 구하고 할 수 없다. 조건이 최대 입력값이 20억이기 때문에 규칙을 찾아야 한..
import sys input = sys.stdin.readline N = int(input()) cnt = 0 while N >= 5: cnt += N//5 N = N//5 print(cnt) 문제요약 팩토리얼 완료한 값에서 뒤에서부터 0이 아닌 숫자가 나올 때까지 0은 몇번 나오는가? 설명 이 문제는 설명이 그지 같다. 위 처럼 설명만 해도 이해하기는 어렵지 않았을 것이다. 예를들어 5! 은 120이고 뒤에서부터 0이 한번 나오므로 출력값은 1이다. 10! 같은 경우는 3628800이므로 0이 두번 나오므로 출력값은 2이다. 0의 개수는 다음과 같은 규칙이 있다. 2와 5가 곱해져야 0의 카운트가 증가한다. 따라서 5의배수! 에서 개수가 증가하는 것을 볼 수 있다. 여기서 한번 더 유의깊게 볼 점은 ..
import sys input = sys.stdin.readline T = int(input()) result = "" for _ in range(T): n = int(input()) clothes = [input().split()[1] for _ in range(n)] clothesType = {} for val in clothes: if val in clothesType: clothesType[val] += 1 else: clothesType[val] = 1 tmp = 1 for val in clothesType: tmp *= (clothesType[val]+1) result += str(tmp-1) + "\n" print(result) 문제요약 옷을 입는 경우의 수를 구하라. 설명 만약 6개의 옷이..
import sys input = sys.stdin.readline result = "" for _ in range(int(input())): N, M = map(int, input().split()) A, B = N, M for i in range(1, A): N *= (A-i) M *= (B-i) if(N == 0): N = M result += str(M//N) + "\n" print(result) 문제요약 이항계수를 구하라. (조합) 설명 이항계수를 푸는방법은 위와같이 반복문이 아닌 재귀함수를 사용해서도 풀 수 있다. 일단 위 방법은 예를들어 10 과 5가 들어왔다고 해보자. n은 N으로, r은 K로 생각하면 된다. 다음과 같이 값이 들어올 것이다. 이를 정리하면, 다음과 같이 나올 것이다. 즉,..