백준 문제풀이(파이썬)/정수론 및 조합론

옷의 종류와 개수에 따라 입을 수 있는 경우의 수를 구하는 문제이다. 알고리즘적인 문제이기보다 경우의 수를 구하는 수학 문제라고 생각하면 된다. 예를 들어, A유형의 옷이 2벌, B유형의 옷이 3벌 C유형의 옷이 1벌있다고 가정하자. 만약 A, B, C를 모두 입는 경우라면 2X3X1 = 6일 것이다. 하지만, 각각 따로 입는 경우도 있기 때문에 무작정 곱하면 안된다. A의 옷이 각각 A1,A2라고 하면 여기에 A의 옷을 입지 않는 AX를 추가하고, B와 C도 모두 각각 BX, CX를 추가하여 곱해주면, 각 옷을 입지 않는 경우도 포함한 경우가 나올 것이다. 물론 모두 입지 않은 알몸의 경우도 포함되기 때문에 1을 빼주는 것을 주의해야한다. ##함수 선언 부분## ##변수 선언 부분## ##메인 함수 부..
어떤 수로 나누었을 때 모두 나머지가 같게 되는 수를 찾는 문제이다. A를 M으로 나누었을 때 나머지를 R이라고 하면, A = M * a + R B = M * b + R C = M * c + R 위의 식이 성립한다. R을 없애기 위해 각 식을 빼보면, A - B = M(a-b) B - C = M(b-c) 위 처럼 M은 각 수의 차의 공약수이다. 각 수들의 차를 먼저 구하고 그 수들의 최대공약수를 구한 뒤에 1을 제외한 약수들을 출력해주면 된다. ##함수 선언 부분## from math import gcd ##변수 선언 부분## A = [] B = [] min = 0 min_i = 0 tmp = 0 divisor = [] ##메인 함수 부분## if __name__ == "__main__": N = int..
aodtns
'백준 문제풀이(파이썬)/정수론 및 조합론' 카테고리의 글 목록