일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 선택알고리즘
- 힙정렬
- 동적계획법
- 프로그래밍
- 삽입정렬
- java
- DP
- 정렬
- 재귀
- 병합정렬
- 다이나믹프로그래밍
- 퀵정렬
- 자바
- 수학
- 안드로이드
- 코딩테스트
- 선택정렬
- 자료구조
- 알고리즘
- 백트래킹
- 버블정렬
- 백준
- 프로그래밍언어
- 계수정렬
- C++
- Median of Medians
- 동적프로그래밍
- 기수정렬
- SNS
- 정수론
- Today
- Total
목록알고리즘 (33)
MODE::CREATIVE
https://www.acmicpc.net/problem/1431문제 해석문제에 제시된 조건으로 문자열들을 정렬한다알고리즘 분류정렬풀이C++ STL인 sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp) 함수에 문제에 제시된 비교조건을 구현하여 인자로 사용한다 코드#include #include #include #include #include using namespace std;bool cmp(const string &o1, const string &o2) { if (o1.length() != o2.length()) { return o1.length() > n; vector serials(n); ..
https://www.acmicpc.net/problem/1463문제 해석동적계획법을 이용하여 1로 만드는 연산의 최소값을 구한다알고리즘 분류동적계획법(dp)풀이dp[1], dp[2], dp[3]을 미리 초기화한다점화식을 세워 n까지 연산한다코드#include #include #include #include #include using namespace std;int dp[1000001];int main() { long n; dp[1] = 0; dp[2] = 1; dp[3] = 1; cin >> n; for (int i=4; i
https://www.acmicpc.net/problem/1929문제 해석에라토스테네스의 체를 이용해 소수 구하기알고리즘 분류수학정수론풀이에라토스테네스의 체를 이용해 N까지의 소수를 판별한다코드#include #include #include #include #include #include using namespace std;int m, n;int arr[1000001] = {0,};int main() { cin >> m >> n; arr[0] = 1; //소수가 아님 arr[1] = 1; for (int i=2; i
https://www.acmicpc.net/problem/1966 문제 해석큐를 이용한 우선순위 구하기알고리즘 분류자료구조큐풀이순서(num)와 우선순위(prioty)를 가진 class를 큐에 저장하고순회하며 제일 우선순위가 큰지 검사코드#include #include #include #include #include #include using namespace std;int n, m, t;class Num {public: int num; int prioty; Num(int a, int b) : num(a), prioty(b){}; };void solution() { cin >> n >> m; queue q; for (int i=0; i> prioty; q.p..
2579번: 계단 오르기 (acmicpc.net)문제 해석dp를 이용한 최대값 찾기알고리즘 분류dp풀이점화식 dp[i] = max(dp[i - 3] + arr[i - 1] + arr[i], dp[i - 2] + arr[i])를 이용해 dp배열을 채운다코드#include #include #include using namespace std;int n;vector arr;int dp[301];int main() { cin >> n; arr.resize(n + 1); for (int i = 1; i > arr[i]; } // 초기값 설정 dp[1] = arr[1]; if (n > 1) { dp[2] = arr[1] + arr[2]; } if (n > 2) { dp[3] = m..
2606번: 바이러스 (acmicpc.net)문제 해석감염된 컴퓨터를 배열로 표현하고 그 수를 출력한다알고리즘 분류dfs(깊이우선탐색)풀이컴퓨터 간 연결 관계를 그래프로 나타낸다dfs를 이용해 감연된 컴퓨터를 표시한다감염된 컴퓨터 수를 출력한다코드#include #include #include using namespace std;int n, s, count = 0;vector visited;vector> arr;void dfs(int start) { for (int i = 1; i > n >> s; arr.resize(n + 1, vector(n + 1, 0)); visited.resize(n + 1, 0); visited[1] = 1; for (int i = 0; i > x >> y; a..