일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- stoi
- DP
- 이분탐색
- 백트래킹
- N과M
- 최소공배수
- priority_queue
- 유클리드호제법
- 그래프
- C++
- 백준
- map
- 프로그래머스
- 에라토스테네스의 체
- 정렬
- DFS
- 티스토리챌린지
- 배열
- 분할정복
- vector
- Set
- 다이나믹프로그래밍
- 우선순위큐
- Sort
- BFS
- 오블완
- 알고리즘
- int
- 문자열
- 깊이우선탐색
- Today
- Total
목록전체 글 (220)
안녕 세상아,
https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net #include #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int t; cin >> t; int zero[45] = {}; int one[45] = {}; zero[0] = 1; zero[1] = 0; one[0] = 0; one[1] = 1; for (int i = 2; i < 45; i++) { zero..
https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net #include #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; int dp[13] = {}; dp[0] = 1; dp[1] = 2; dp[2] = 4; for (int i = 3; i < 12; i++) { dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];..
우선순위 큐란? 일반적인 큐와 달리 선입선출 구조가 아닌 큐에 있는 모든 원소 중에서 가장 큰 값이 top을 유지하도록, 우선순위가 가장 크도록 설계되어있다. 또한 내부적으로 heap이라는 자료구조를 사용하고있다. #include 선언해야한다. 기본 메소드 push() : 우선순위 큐에 원소를 추가한다 pop() : 우선순위 큐에서 top의 원소를 제거한다 top() : 우선순위 큐에서 top에 있는 원소 즉 우선순위가 높은 원소를 반환한다. empty() : 우선순위 큐가 비어있으면 true를 반환하고 그렇지 않으면 false를 반환한다 size() : 우선순위 큐에 포함되어 있는 원소의 수를 반환한다 기본 자료형 사용법 #include #include using namespace std; ..
https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include #include #include using namespace std; string solution(string s) { string answer = ""; //나누어진 문자열에서 필요한 자료형 뽑아낼 때 사용 stringstream stream(s); vector v; stream.str(s); string word; //입력값에서 하나씩 분리해서 ..
https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net #include #include #include #include #include using namespace std; int arr[1000001] = { 0, }; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int a, b; cin >> a >> b; for (int i = 2; i

너비 우선 탐색이란 1.현재 정점과 인접한 모든 정점 방문 2. 이들 정점과 인접한 모든 정점 찾아서 방문 그래프의 모든 정점을 탐색할 때까지 위의 과정 반복 시작 정점으로부터 가까운 정점 먼저 방문, 멀리 떨어져있는 정점 나중에 방문한다. 큐 이용하여 구현 DFS와 같은 수식 bool isVisited[N] = { }; -> 정점 방문 여부 검사 -> 정점 방문 여부를 검사하지 않으면 무한 루프에 빠질 수 있다. #include #include #include #include using namespace std; vector bfs(const vector& adj_list, int s) { vector visited(adj_list.size(), false); vector visit_orde..
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net x가 2, 3, 4일 때는 직접 계산하기 쉽다. 그 이후 생각할 것이 많은데 재귀를 이용해서 풀게되면 시간 초과가 생길 수 있다. 다이나믹 프로그래밍을 사용해서 풀면 되는데 어렵게 생각하지 않고 재귀를 배열로 나타낸다고 생각하면 될 것 같다. x가 5부터 어떻게 되는지는 아래 코드에 자세하게 써놨다. #include #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NUL..

깊이 우선 탐색이란 1. 인접한 정점 중 하나 선택 2. 인접한 정점으로 이동 3. 더이상 이동할 정점이 없을 경우 백트래킹 그래프의 모든 정점을 탐색할 때까지 위의 과정을 반복한다. 시작 정점으로부터 거리가 멀어지는(깊이가 깊어지는) 방식으로 정점 탐색 보통 재귀, 스택을 이용하여 구현한다. bool isVisited[N] = { }; -> 정점 방문 여부 검사 -> 정점 방문 여부를 검사하지 않으면 무한 루프에 빠질 수 있다. #include #include #include #include using namespace std; const int N = 6;//정점 6개 bool gVisited[N] = {};//정점 방문 했는지 확인 void dfs_recursion(const vector..
https://www.algospot.com/judge/problem/read/FESTIVAL 그 유명한 종만북을 공부해보려고 한다. 가장 첫번째에 나오는 문제이다. 분명 종만쌤은 쉽다고 난이도 하라고 했는데 하여자는 나였다.. 풀이 방법은 l개 이상, n개 이하의 모든 평균을 구한 후 최솟값을 출력하면 된다. 가장 간단한 브루트포스 알고리즘이다. 어떻게 풀어야하는지 대충은 알지만 코드로 작성하자니 참,,어려웠다. 설명은 코드에~ #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int c, n, l; cin >> c; wh..
https://www.acmicpc.net/problem/15649 전형적인 백트래킹 문제,, DFS를 참고해서 풀면 된다. 중복도 허용하기 때문에 백트래킹계의 순열이라고 볼 수 있다. DFS의 재귀를 이용하여 풀었다. 자세한 설명은 코드에 적어놓았다. #include #include #include using namespace std; bool checked[9] = { false, }; int arr[9] = {}; int a, b; void dfs(int depth) { //만약 dfs의 depth가 b와 같으면 arr배열에 담긴 순열 출력, 종료 if (depth == b) { for (int i = 0; i < b; i++) { cout b; dfs(0);// 백트래킹 0부터 시작 } 백트래킹에..