백준/BOJ: N과 M 문제 모음 (순열/조합 정리)
·
Algorithm/백준 (BOJ)
✏️ 순열과 조합순열: N개 중 중복 없이 M개를 뽑아 순서 있게 나열한다조합: N개 중 중복 없이 M개를 뽑아 순서 없이 나열한다중복순열: N개 중 중복 허용하여 M개를 뽑아 순서 있게 나열한다중복조합: N개 중 중복 허용하여 M개를 뽑아 순서 없이 나열한다 이름중복 허용순서공식itertools순열XOP(N, M) = N! / (N-M)!permutations(iter, M)조합XXC(N, M) = N! / M!(N-M)!combinations(iter, M)중복순열OON^Mproduct(iter, repeat=M)중복조합OXC(N+M-1, M)combinations_with_replacement(iter, M) ✏️ [백준] N과 M 문제 모음 문제를 클릭하면 백준 문제 링크로 이동하고, 풀이를 클..
[Python] 백준/BOJ 15666번: N과 M (12) (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.고른 수열은 비내림차순이어야 한다.길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 💡 Approach중복 조 코드를 기반으로 해서 이전값(prev)을 기록하는 변수를 추가했다.이전 값을 기록해서 이전값과 같은 숫자를 또 선택하지 못하게 막았다. 예를 들어, N=4, M=2, num=[1, 2, 3, 3]인 상황을 살펴보자.(1, 1)를 뽑은 후에 두 번째 자리의 숫자를 교체하려고 할 것이다.교체하게 되면 (1, 2)가 되고, 한..
[Python] 백준/BOJ 15665번: N과 M (11) (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다. 💡 Approach중복 순열 코드를 기반으로 해서 이전값(prev)을 기록하는 변수를 추가했다.이전 값을 기록해서 이전값과 같은 숫자를 또 선택하지 못하게 막았다. 예를 들어, N=4, M=2, num=[1, 2, 3, 3]인 상황을 살펴보자.(1, 1)를 뽑은 후에 두 번째 자리의 숫자를 교체하려고 할 것이다.교체하게 되면 (1, 2)가 되고, 한 번 더 교체하면 (1, 3)이 된다. 원소가 4개이므로 한 번 더 교체하려고 할 텐데, 여기서 prev가 없다면 3(index 2)에서..
[Python] 백준/BOJ 15664번: N과 M (10) (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열고른 수열은 비내림차순이어야 한다.길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 💡 Approach조합 코드를 기반으로 해서 이전값(prev)을 기록하는 변수를 추가했다.이전 값을 기록해서 이전값과 같은 숫자를 또 선택하지 못하게 막았다. 예를 들어, N=4, M=2, num=[1, 2, 3, 3]인 상황을 살펴보자.(1, 2)를 뽑은 후에 두 번째 자리의 숫자를 교체하려고 할 것이다.교체하게 되면 (1, 3)이 된다. 원소가 4개이므로 한 번 더 교체하려고..
[Python] 백준/BOJ 15663번: N과 M (9) (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열 💡 Approach순열 코드를 기반으로 해서 이전값(prev)을 기록하는 변수를 추가했다.이전 값을 기록해서 이전값과 같은 숫자를 또 선택하지 못하게 막았다. 예를 들어, N=4, M=2, num=[1, 2, 3, 3]인 상황을 살펴보자.(1, 2)를 뽑은 후에 두 번째 자리의 숫자를 교체하려고 할 것이다.교체하게 되면 (1, 3)이 된다. 원소가 4개이므로 한 번 더 교체하려고 할 텐데, 여기서 prev가 없다면 3(index 2)에서 3(index 3)으로 교체하게 된다.그래서 같은 값은 (1, 3)으로 교체될..
[Python] 백준/BOJ 15657번: N과 M (8) (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.고른 수열은 비내림차순이어야 한다.길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 💡 Approach 입력받은 num 리스트에서 순서 없이 M개의 원소를 뽑는다. (중복 조합) ✏️ Solution (itertools)import sysfrom itertools import combinations_with_replacementinput = sys.stdin.readlineN, M = map(..
[Python] 백준/BOJ 15656번: N과 M (7) (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다. 💡 Approach입력받은 num 리스트에서 M개의 원소를 뽑는다. (중복 순열) ✏️ Solution (itertools)import sysfrom itertools import productinput = sys.stdin.readlineN, M = map(int, input().split())num = sorted(map(int, input().split()))print('\n'.join(' '.join(map(str, p)) for p in ..
[Python] 백준/BOJ 15655번: N과 M (6) (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열고른 수열은 오름차순이어야 한다. 💡 Approach입력받은 num 리스트에서 순서 없이 M개의 원소를 뽑는다. (조합) ✏️ Solution (itertools)import sysfrom itertools import combinationsinput = sys.stdin.readlineN, M = map(int, input().split())num = sorted(map(int, input().split()))print('\n'.join(' '.join(map(str, p)) f..