본문 바로가기

분류 전체보기

(297)
N-Queen www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net #include #include #include using namespace std; int n; int dx[] = { 1,-1,0,0,1,1,-1,-1 }; int dy[] = { 0,0,-1,1,-1,1,-1,1 }; int answer = 0; void find( int check[15][15], int count , int x) { if (count == n) { answer++; return; } for (int y..
섬 연결하기 - 크루스칼 알고리즘 크루스칼 알고리즘 spanning tree - 신장 트리 , 그래프내의 모든 정점을 포함하는 트리로 그래프의 최소 연결 부분 그래프이다. - n개의 정점을 가지는 그래프의 최소 간선의 수는 n-1 개이다. minimum spanning tree - 가장 적은 비용으로 모든 노드를 연결하는 것으로 이 때 사용하는 알고리즘 중 하나가 크루스칼 알고리즘이다 알고리즘 진행 순서 1. 비용을 기준으로 오름차순으로 정렬 2. 정렬된 순서에 맞게 그래프에 포함 3. 포함시키기 전에 사이클 테이블을 확인한다. -> 이때 사이클을 확인하는 방법이 Union Find (합집합 찾기, 서로소집합 알고리즘) 4. 사이클을 형성하는 경우 간선을 포함하지 않는다. 참고: m.blog.naver.com/PostView.nhn?bl..
에너지모으기 www.acmicpc.net/problem/16198 16198번: 에너지 모으기 N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있 www.acmicpc.net #include #include #include #include using namespace std; int maxnum = 0; int n; void findmax(int*goosle, vector&check,int energy, int sz) { if (sz == 2) { if (maxnum < energy) { maxnum = energy; } return; } for (int i = 1; i < n..
풍선 터트리기 programmers.co.kr/learn/courses/30/lessons/68646 코딩테스트 연습 - 풍선 터트리기 [-16,27,65,-2,58,-92,-71,-68,-61,-33] 6 programmers.co.kr #include #include #include using namespace std; int solution(vector a) { int answer =0; int sz = a.size(); vectorleftmin(sz); vectorrightmin(sz); int minnum = 1000000000; for(int i=0; i
여행경로 programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO] programmers.co.kr #include #include #include #include using namespace std; bool find(vector&check,vector &tickets, int idx, vector&route){ string goal = tickets[idx][1]; route.push_back(goal); if(route.size()==tickets.size()+1){return true;} ..
두 동전 www.acmicpc.net/problem/16197 16197번: 두 동전 N×M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1×1크기의 정사각형 칸으로 나누어져 있고, 각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, www.acmicpc.net #include #include #include using namespace std; int dx[] = { -1,1,0,0 }; int dy[] = { 0,0,1,-1 }; int n, m; int minnum = 10000; int check[21][21][21][21]; bool over(int a, int b) { if (a = n|| b >= m) return tru..
브라이언의 고민 programmers.co.kr/learn/courses/30/lessons/1830 코딩테스트 연습 - 브라이언의 고민 programmers.co.kr #include #include #include using namespace std; // 전역 변수를 정의할 경우 함수 내에 초기화 코드를 꼭 작성해주세요. string solution(string sentence) { string answer = ""; int expect=0; //0,1,2,3,4 mapm; int t=0; while(sentence.size()>0){ if(sentence.size()>=3){ if(isupper(sentence[0])&&isupper(sentence[1])){expect=0;} else if(isupper(sen..
2*n 타일링 programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 programmers.co.kr #include #include #include #include #include using namespace std; int solution(int n) { int answer = 0; int arr[60005]; arr[0]=0; arr[1]=1; arr[2]=2; for(int i=3; i