본문 바로가기

combination6

[C/C++] 프로젝트 오일러 #114 Counting Block Combinations I (조합) 프로젝트 오일러 114번 문제는 길이가 n인 일렬의 칸에 일정한 조건을 만족하도록 빨간 블록을 배치하는 방법의 수를 세는 것에 관한 문제입니다. 이 때 사용되는 빨간 블록은 최소 3칸 이상의 길이를 가져야 하며, 빨간 블록들 사이에는 적어도 하나 이상의 검은 칸이 존재해야 합니다. 또한, 빨간 블록을 전혀 놓지 않는 경우도 하나의 가능한 배치로 포함합니다.문제에서 정의하는 함수 f(n)은 길이가 n인 칸에 위와 같은 규칙을 적용했을 때 나올 수 있는 모든 가능한 배치의 수를 나타냅니다. 주어진 예시로, n=7일 때 f(7)의 값이 특정 수(17)로 제시되며, f(50)의 값도 매우 큰 수(16475640049)로 주어집니다. 문제는 이러한 함수 f(n)의 값을 확장해 나갈 때, f(n)이 1,000,00.. 2024. 12. 18.
[C/C++] 프로젝트 오일러 #106 Special Subset Sums: Meta-testing(점화식) Project Euler #106: Special Subset Sums: Meta-testing 문제는 주어진 집합에서 두 개의 부분집합을 비교할 때, 그 부분집합들이 특정 조건을 만족하는지를 검사하는 경우의 수를 구하는 문제입니다.문제를 간단히 설명하면,1. 집합: 크기 n 인 자연수 집합 {1,2,3,,n}가 주어진다.2. 부분집합 조건: 두 부분집합 A 와 B 가 다음 조건을 만족하는지 확인해야 한다:• |A|=|B| (부분집합의 크기가 동일해야 한다.)• A와 B가 서로 다른 부분집합이어야 한다.• A와 B의 합을 비교하는 것이 의미 있으려면, A와 B를 “비교 가능한 형태”로 만들어야 한다.• “비교 가능”하다는 것은, 두 부분집합이 항목의 순서에.. 2024. 11. 27.
[Python] 백준 #2407 조합(수학) 이번 문제는 nCr 조합을 구하라는 것입니다. 조합을 구하는 알고리즘은 수학을 알고 있다면 손쉽게 할 수 있습니다. 단지 문제는 숫자가 커지기 때문에 BigInteger 자료형을 제공하는 파이썬이나 자바를 이용하시는 것이 편합니다. https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net 저는 파이썬을 이용했습니다. nCr=n!(nr)!r! 이것을 그대로 구현하였습니다. 제가 작성한 소스입니다. """ // baekjoon #2407 // - by Aubrey Choi // - created at 2019-06-27 "".. 2023. 4. 29.
#1256 사전(Combination Digit) 이번 문제는 사실상 조합을 찾아내는 문제입니다. 그런데 조합을 찾기 위한 숫자가 좀 큽니다. 그래보았자, 100이지만요. 난이도는 Gold IV입니다. 정답률은 28.5%이긴 하지만, 크게 어렵지 않았다고 생각했습니다. 문제의 내용을 정리하자면, N개의 a 문자와 M개의 z 문자를 조합하여 사전순으로 배열할 때, K번째 문자열을 출력하는 문제입니다. 예를 들어서 3개의 a와 2개의 z가 있다면 다음과 같이 사전순으로 나열할 수 있습니다. aaazz aazaz aazza azaaz azaza azzaa zaaaz zaaza zazaa zzaaa 이렇게 해서 총 10개의 문자열이 나옵니다. 10개의 문자열이 나온 이유는 5개의 공간 중에 2개의 공간을 선택해서 그곳에 z를 채우고, 나머지 공간에는 a로 채우.. 2020. 1. 13.
[C/C++] 백준 #1010 다리 놓기(조합) 백준 #1010 다리 놓기 문제는 수학 중 확통의 경우의 수에 어느정도 개념이 있어야 풀 수 있는 문제입니다.  강을 사이로 왼쪽에는 N 개의 지역, 오른쪽에는 M 개의 지역이 있습니다.  이 N개의 지역에 하나씩 다리를 놓아서 오른쪽에 있는 M개의 지역을 연결하고자 하는데, 다리가 서로 엇갈리지 않도록 하는 경우의 수를 물어보고 있습니다.  경우의 수를 따지는 데에는 순열과 조합이 있는데, 이와 같이 엇갈리지 않게, 즉, 항상 정해진 순서대로(또는 증가하는 순서, 감소하는 순서 등) 나열해야한다면, 이것은 조합을 선택해야 합니다.  결국 이 문제는 M개 중에서 N개를 선택하는 문제가 되겠죠. 실제 백준 문제는 다음 링크를 봐주세요.https://www.acmicpc.net/problem/1010 101.. 2019. 12. 21.
[C/C++] 프로젝트 오일러 #15 격자 경로의 수 구하기(조합) 사실 이번 문제는 상당히 쉬운 편이라서 그다지 설명이 필요할 것도 없을 듯 합니다. 다른 프로그래머도 저랑 비슷한 접근을 했고요.  2014년 년 마지막 날을 이렇게 보내네요. 이 문제는 격자(grid)를 기반으로 한 경로 계산 문제입니다. 다음은 문제의 배경과 요구사항입니다:문제 설명:2차원 격자가 주어졌을 때, 왼쪽 위 모서리에서 오른쪽 아래 모서리까지 이동하는 경로의 수를 계산합니다. 이때 이동은 오직 오른쪽 또는 아래쪽 방향으로만 가능합니다. 격자의 크기는  n×n 으로 주어지며, 경로의 조합 수를 계산하는 것이 목표입니다.문제의 요구사항:•  n×n  크기의 격자에서 가능한 모든 경로의 수를 구하시오.• 경로의 수는 조합 수식을 사용하여 계산됩니다. 수학적.. 2014. 12. 31.
728x90