본문 바로가기

알고리즘40

알고리즘 문제풀때 순서 알고리즘을 공부하다보니 크게 2가지 문제로 인해 승패가 갈리는것 같았다. 지문 이해 및 조건파악 구현능력 위 2가지를 문제 풀때마다 계속 느꼈던거 같다. 지문을 잘못 이해했을때, 조건을 잘못 파악하였을때.. 전혀 엉뚱한 방향으로 문제를 풀었으며 이러한 버그(?)는 찾기도 어려웠다. 지문을 다시읽지 않는 한 절때 찾을 수 없는 문제였고 한번 이해했다고 판단한 부분은 빠르게 스킵하여 다시 읽어도 못잡았던 때가 있었다. 구현능력도 마찬가지로 문제를 풀면서 느낀거다. 시험을 보려면 당연히 구현을 해야한다. 다들 코딩테스트나 알고리즘 문제를 풀기전에 이에대한 기본개념을 먼저 준비한다. 예를들면 DFS, BFS, 재귀함수 등 다양한 개념과 알고리즘 , 자료구조를 선행학습 한 후 문제를 푼다. 이런 개념들을 많이 아.. 2019. 12. 25.
연구소 - 14502 문제 : https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. www.acmicpc.net 코드 : #include #include #include using namespace std; int N, M; int num[8.. 2019. 12. 25.
N-Queen - 9663 문제 : https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 코드 : #include #include using namespace std; int N = 0; int maxCount = 0; int arr[4][2] = { {-1, -1}, {-1, 1}, {1, -1}, {1, 1} }; vector temp; bool AddCheck(int i, int j) { for (auto v : temp) { // v.first == i 어차피 동일한 행이 들어올 수 .. 2019. 12. 23.
[모의 SW 역량테스트] 등산로 조성 - 1949 문제 : https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 코드 : #include #include using namespace std; int N, K = 0; int num[8][8] = { 0 }; vector temp; bool check[8][8] = { false }; int maxCount = 0; bool indexCheck = true; int arr[4][2] = { {-1,0}, {0, -1}, {0, 1}, {1,0} }; // count =방문길이 , i= 행 , j = 가로 ,.. 2019. 12. 23.
퇴사 - 14501 문제 : https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 코드 : #include using namespace std; int tnum[16] = { 0 }; int pnum[16] = { 0 }; int total = 0; void solution(int day, int sum, int n) { //탈출조건 if(day == n +1)//if (day + tnum[day] - 1 > n) { if (total n + 1) { return; } solution(day + tnum[day], sum + p.. 2019. 12. 3.
부분수열의 합 - 1182 문제 : https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 코드 : #include #include using namespace std; int num[20] = { 0 }; vector temp; int ncount = 0; int n, s; void solution(int index, int sum) { //탈출조건 if (index == n) { if (sum == s) { ncount+=1; } retu.. 2019. 12. 3.
암호 만들기 -1759 문제 : https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 코드 : #include #include #include using namespace std; vector num; char mon[15] = {}; void solution(int s, int l, int c) { //탈출조건 if (num.size() == l) { //모음 최소 1개, 자음 최소 2개 체크 int m_c = 0; int j_c = 0; for (auto iter = num.. 2019. 12. 3.
연산자 끼워넣기 (2) - 15658 문제 : https://www.acmicpc.net/problem/15658 15658번: 연산자 끼워넣기 (2) 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1보다 크거나 같고, 4N보다 작거나 같은 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱셈(×)의 개수, 나눗셈(÷)의 개수이다. www.acmicpc.net 코드 : #include #include #include using namespace std; int num[11]; int mon[4]; bool check[44] = { false }; int m = 0; int n = 0; int numMa.. 2019. 12. 3.
연산자 끼워넣기 - 14888 문제 : https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱셈(×)의 개수, 나눗셈(÷)의 개수이다. www.acmicpc.net 코드 : #include #include #include #include using namespace std; int main() { int n; cin >> n; //숫자 입력 int a[100] = { 0 }; for (int i = 0; i > a[i];.. 2019. 11. 25.