쾌락없는 책임 (공부)/알고리즘 문제풀이
-
백준 14226 이모티콘 - 큐를 이용한 너비 우선 탐색쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 2. 26. 15:24
문제출처 https://www.acmicpc.net/problem/14226 소스코드 #include #include using namespace std; bool visit[2000][2000]; // [화면][클립보드] int bfs(int s){ queue q; // 화면, 클립보드, 시간 int screen, clipboard, time; q.push(make_pair(make_pair(1,0), 0)); visit[1][0] = true; // 큐를 이용한 너비 우선 탐색 while(!q.empty()){ screen = q.front().first.first; clipboard = q.front().first.second; time = q.front().second; q.pop(); // 결과..
-
백준 1725 히스토그램 - 스택을 이용한 C++쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 2. 22. 15:46
문제 출처 www.acmicpc.net/problem/1725 소스코드 #include #include #include using namespace std; int arr[1000010]; stack sta; int n, result = 0, w, h; int main(){ // 속도 향상 ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; for(int i = 1; i > arr[i]; // 스택을 이용해서 문제풀이 // 스택에 히스토그램 인덱스값(1부터 시작)을 계속 넣는다 = 이게 이전 위치 // 만약 현재 위치(i)가 이전 위치(스택에 있음)보다 작다면 // 스택에서 현재 위치(i)보다 작은 값이 나올때 까지 계..
-
0/1 냅색 문제 풀이하기쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 1. 14. 20:11
끄적인 필기 간단하게 끄적인 노트 설명 가방 문제라고도 하는 이 알고리즘은 일정한 Capacity가 있고 이 Capacity에 용량을 차지하는 가치가 있는 물건을 최대한 담는게 목표다. 백준의 14728문제와 12865문제가 대표적이다. 두개 다 같은 코드로 작동이 가능했다. 처음 구현을 할 때 2차원 배열을 써야하나 계속 고민을 했었는데 다른 고수들의 코드를 보니깐 1차원 배열로도 충분히 해결이 가능했었다. 1차원 배열을 선언 (배열의 크기는 '최대 용량의 크기 +1') 여기서 배열의 인덱스의 뜻이 인덱스만큼 용량을 소모했다가 되고, 그 인덱스에 해당하는 값이 용량을 소모한 뒤 가능한 최대값이 된다. 이후 (차지하는 용량, 가치)를 하나씩 입력받는다 '(전체용량-차지하는 용량) ~ 전체 용량'만큼 fo..
-
-
백준 - 1697, 10971쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 1. 6. 19:04
1697 : www.acmicpc.net/problem/1697 #include #include using namespace std; #define max 100001 bool isVisited[max]; // 방문한 곳을 다시 방문할 필요가 없으니 체크하기 위한 배열 (default : false) int N, K; int search(int N, int K) { int count = 0; // 몇번만에 만났는지 체크할 변수 queue q; q.push(N); // 일단 자기 위치 넣어줌 while(true){ //계속 돌게하고 탈출 조건인 N = K를 안에 넣음 int n = q.size(); for(int i = 0; i < n; i++){ N = q.front(); q.pop(); if(N == ..
-
백준 9095, 10819쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 1. 5. 18:03
#include int arr[11]; int n; int function(){ arr[1] = 1; arr[2] = 2; arr[3] = 4; for(int i = 4; i 입력 > 출력 > 입력 > 출력 ...... 이 더 메모리 낭비가 없다 #include #include using namespace std; int main(){ int N, result; int arr[8]; scanf("%d", &N); for(int i = 0; i < N; i++) scanf("%d", &arr[i]); sort(arr, arr+N); // algorithm에 있는 정렬 // ([0] -[1]) + ([1]-[2]) ... 이런 식의 식을 다 해보면 된다 do { int sum = 0; // 초기화 안하면 값..
-
백준 1476, 1107 (C++)쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 1. 4. 19:53
1476 : www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net #include int E, S, M; int CalculateYear(){ int result = 1; while(true){ if((result - E)%15 == 0 && (result - S)%28 == 0 && (result - M)%19 == 0) return result; result++; } } int main() { scanf("%d %d %d", &E, &S, &M); printf("%..
-
백준 2751 Merge Sort, QuickSort, HeapSort쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 1. 1. 17:22
www.acmicpc.net/problem/2751 #include using namespace std; int list[1000000]; void merge(int arr[], int left, int middle, int right){ int i, j, k, l; i = left; j = middle +1; k = left; // 배열 합병 while(i 자식 의 구조로 만드는 과정 // i가 부모이고 cur(현재 가리키는 인덱스)은 i의 왼 자식 // 왼쪽 오른쪽을 비교한 뒤 더 큰걸 선택 // 부모와 제일 큰 자식을 비교 // 만약 부모가 교체되고 cur