조합

    [python] 백준 - 14889. 스타트와 링크

    [python] 백준 - 14889. 스타트와 링크

    🤔문제 해결 S3 | 브루트포스, 백트래킹 재귀 함수를 이용하여 A팀을 구한다. 전체 멤버의 절반이 될 때까지 팀을 구성 set으로 구한다. ( 교집합을 사용해서 B팀을 구하기 위해 ) 두 팀을 구했으면 각 팀의 모든 조합을 테이블에서 값을 계산해서 구해준다 이번에는 콤비네이션 모듈을 사용했다. 테이블의 값을 모두 더해주고 두 팀의 총합을 빼준뒤 절대값을 씌워서 차이를 구한다. 최소값으로 답을 갱신해준다. 💨 팀을 구할 때 콤비네이션을 쓰지 않은 이유는 콤비네이션은 모든 경우의 수를 구하기 때문 전체 회원 [0, 1, 2, 3] 일 때 A 팀이 0,1 B팀이 1,2 인 경우와 A 팀이 2,3 B팀이 0,1 인 경우의 답은 같지만 콤비네이션은 이 두가지 경우를 구하므로 비효율적 💻소스 코드 from ite..

    [python] 백준 - 1722. 순열의 순서

    [python] 백준 - 1722. 순열의 순서

    🤔문제 해결 S1 | 수학, 조합론 순열을 보면 itertools의 permutation이 생각난다. 하지만 이 문제에서는 N이 20까지 이므로 20!을 구하는것은 불가능. 먼저 소문제1일 때의 경우를 살펴보자. N = 5, K = 35 일 때(5개의 숫자, 35번째 순열) N = 5 이므로 5! = 120이다. 120 / N 으로 나누면 24가 되는데, 이는 각각의 앞자리 5개가 가지는 경우의 수이다. 앞자리가 1이면 1 ~ 24번째, 앞자리가 2이면 25 ~ 48번째, 앞자리가 3이면 49 ~ 72번째 ... 이다. K = 35이면 25~48이므로 앞자리가 2라는 것을 알 수 있다. 다음 스텝으로 넘어가면 n = 4, k = 35 - 24 = 11이다. 즉, 맨 2 이전의 숫자인 1이 맨 앞자리에 오..