Algorithm

    백준 16987 계란으로 계란치기 c++ // 백트래킹, 원상복구, 다음깊이로 넘어가는 방법

    백준 16987 계란으로 계란치기 c++ // 백트래킹, 원상복구, 다음깊이로 넘어가는 방법

    https://www.acmicpc.net/problem/16987 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱 www.acmicpc.net 1. 다음깊이로 넘어가는 방법 if(조건){ go(k+1); return; } 하면된다. 2. 의사코드 3. 내 전체코드 #include using namespace std; int n, v[10], ret; vector eggs; //현재 k번째 계란을 들고 깨려고함 void go(int k) { if (k >= n) { int died_count = 0; for (auto p :..

    [틀림] 백준 1941 소문난 칠공주 c++ // 1차원배열을 2차원좌표로 매핑하는법 , 백트래킹, dfs

    [틀림] 백준 1941 소문난 칠공주 c++ // 1차원배열을 2차원좌표로 매핑하는법 , 백트래킹, dfs

    https://www.acmicpc.net/problem/1941 1941번: 소문난 칠공주총 25명의 여학생들로 이루어진 여학생반은 5×5의 정사각형 격자 형태로 자리가 배치되었고, 얼마 지나지 않아 이다솜과 임도연이라는 두 학생이 두각을 나타내며 다른 학생들을 휘어잡기 시작www.acmicpc.net1. 1차원배열을 2차원좌표로 매핑하는법 1차원 idx : 0 1 2 3 4 5 6 7 8 9 ...... 242차원 : (0,0) (0,1) ....               (4,4)y좌표 == 1차원idx /5x좌표 == 1차원 idx %5 하면 된다!  2. 풀이과정1. 25C7로 인덱스를 조합한다. (방문할 대상들의 좌표를 조합)2. idx로 배열에 접근 후 , s_cnt>=4인지 검사ㅡㅡㅡㅡㅡㅡ..

    백준 6603 로또 c++ // kC6 구현하기

    https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 조합 - isused사용 => 중복조합아님 2. 전체코드 #include using namespace std; int n,k; int a[15], isused[15], arr[15]; //현재 q개뽑았음 void go(int q) { if (q == 6) { for (int ..

    백준 15666 N과 M(12) c++ // 서로같은 n H m , 중복조합 구현

    https://www.acmicpc.net/problem/15666 15666번: N과 M (12) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 핵심로직 1.1 스타트부분 추가 => 조합구현 1.2 방문부분 주석 => 중복구현 1.3 이전 막항과 추가할 값 비교 추가 => 중복된 수열이면 pass! 2. 전체코드 #include using namespace std; int n,m; int num[10],arr[10]; int isused[10]; //현재까지 k개의 수를 선택함. void go(int k) { if (k==m){ ..

    백준 15665 N과 M(11) c++ // 서로다른 n ∏m, 중복순열 구현방법

    https://www.acmicpc.net/problem/15665 15665번: N과 M (11) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 핵심로직 1.1 방문처리주석 => 중복구현 1.2 스타트부분 주석 => 순열구현 1.3 이전막항과 추가할값 비교 추가 => 중복된 수열 제거! 2. 전체코드 #include using namespace std; int n,m; int num[10],arr[10]; int isused[10]; //현재까지 k개의 수를 선택함. void go(int k) { if (k==m){ for (in..

    백준 15664 N과 M(10) c++ // 서로다른 n C m 구현하기

    백준 15664 N과 M(10) c++ // 서로다른 n C m 구현하기

    https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 핵심로직 for문에 start추가 => 조합구현. //스타트=> 조합구현 int st = 0; if (k != 0) st = arr[k - 1]; int tmp = 0; for (int i = st; i < n; ++i) { if (isused[i]) continue; if (tmp == num[i]) continue; //(이전수열의 막항 == 새로추가할 값)중복된 수열이면 패스! ar..

    백준 15663 N과 M(9) c++ // 서로같은 n P m, 중복된수열 검사하는 방법

    https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 중복된수열 검사하는 방법 1.1 tmp 배열에는 이전수열의 막항 저장 1.2 tmp == num[i] (추가할값) 이면 중복된 값을 저장하는것 -> pass 해야함. int tmp = 0; for (int i = 0; i < n; ++i) { if (isused[i]) continue; if (tmp == num[i]) continue; //(이전수열의 막항 == 새로추가할 값)중복된 수열..

    백준 15657 N과 M(8) c++ // 중복조합 구현방법

    https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 1. 핵심로직 1 .1. 방문부분 주석 => 중복구현 1. 2. start=arr[k-1] // (이전에 저장된인덱스) 부터 시작 => 조합구현 2. 전체코드 #include using namespace std; int n,m; int num[10],arr[10]; int isused[10]; //현재까지 k개의 수를 선택함. void go(int k) { if (k==m){ for (i..