끄적끄적 코딩
article thumbnail
[C++] 백준 3425번 고스택
알고리즘 2019. 9. 10. 19:07

스택에 여러가지 기능을 더 추가한 문제입니다. 함수를 입력받고 숫자 testcase를 입력받습니다. 그리고 수를 입력 받는데 이 수는 처음 stack에 들어가게 될 수이며 입력 받은 함수들을 순서대로 실행시켜서 나오는 결과를 출력하여야 합니다. testcase만큼 반복하고 다시 함수를 받는 상태로 돌아갑니다. 이는 QUIT를 입력받을 때 까지 계속 반복해서 진행됩니다. 오류가 날 경우 ERROR를 출력해줍니다. (0으로 나누거나, 값을 초과하거나, 결과값이 하나가 아니거나, 비어있는데 호출하는 등) 그 외에는 결과값을 출력합니다. #include #include #include #include #include #include #define MAX 1000000000 using namespace std; ..

article thumbnail
[C++] 백준 1655번 가운데를 말해요
알고리즘 2019. 9. 10. 00:42

우선순위 큐 문제입니다. 가운데 값을 구하기 위해 우선순위 큐를 두개 만들어 주었습니다. pqMin : 작은 값들 저장 (내림차순) pqMax : 큰 값들 저장 (오름차순) 새로운 값이 들어왔을 때 pqMax.top보다 크면 pqMax에 넣어주고 pqMin.top보다 작으면 pqMin에 넣어줍니다. 만약 넣고나서 아래의 조건이 성립하지 않으면 1. pqMax == pqMin + 1 2. pqMax == pqMin 많은 쪽에서 적은쪽으로 top의 위치의 숫자를 옮겨 줍니다. #include #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; int num; prior..

article thumbnail
[C++] 백준 11286번 절댓값 힙
알고리즘 2019. 9. 10. 00:11

우선순위 큐에서 값을 뽑아낼 때 절대값이 낮은 순대로 뽑는 문제입니다. 절댓값을 기준으로하여 내림차순으로 뽑아야하므로 다음처럼 선언해줍니다. priority_queue pq; pair의 첫번째는 절댓값이고, 두번째는 원래 값입니다. 그 뒤의 것들은 내림차순을 의미합니다. #include #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; int num; priority_queue pq; scanf("%d", &n); while (n--) { scanf("%d", &num); if (num == 0) { if (pq.empty()) { printf("0\n"); } ..

article thumbnail
[C++] 백준 1927번 최소 힙
알고리즘 2019. 9. 9. 23:32

우선순위 큐 문제입니다. 1. 수가 0일때 - 비어있으면 0출력 - 비어있지 않으면 pq.top 출력, pq.pop 2. 수가 0이 아니면 pq.push 오름차순으로 출력하기 때문에 다음과 같이 선언해줍니다. 오름차순 형태 priority_priority_queue pq; 기본 형태 priority_priority_queue pq; #include #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; int num; priority_queue pq; scanf("%d", &n); while (n--) { scanf("%d", &num); if (num == 0) { ..

article thumbnail
[C++] 백준 11279번 최대 힙
알고리즘 2019. 9. 9. 23:25

우선순위 큐로 문제를 풀었습니다. 1. 수가 0일때 - 비어있으면 0출력 - 비어있지 않으면 pq.top 출력, pq.pop 2. 수가 0이 아니면 pq.push #include #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int n; int num; priority_queue pq; scanf("%d", &n); while (n--) { scanf("%d", &num); if (num == 0) { if (pq.empty()) { printf("0\n"); } else { printf("%d\n", pq.top()); pq.pop(); } } else { pq.push..

article thumbnail
[C++] 백준 10816번 숫자 카드 2
알고리즘 2019. 9. 9. 23:15

A수열과 B수열이 있을 때 A수열에 B수열의 값이 몇개 있는지 찾는 문제입니다. A수열을 vector에 전부 넣고 sort해줍니다. 그리고 upper_bound - lower_bound로 B수열의 수를 A수열에서 찾으면 개수가 나옵니다. #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int num; int n, m; int count; scanf("%d", &n); vector v(n); for (int i = 0; i < n; ++i) { scanf("%d", &v[i]); } sort(v.begin(), v.end()); scanf("%d", &m); for (int ..

article thumbnail
[C++] 백준 1920번 수 찾기
알고리즘 2019. 9. 9. 22:53

A수열과 B수열이 주어졌을 때 A수열에 B수열 값이 있는지 찾는 문제입니다. A수열을 배열에 넣고 sort한 후에 B수열의 수를 하나씩 A수열을 binary_search를 하여 찾았습니다. #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int arr[100010]; int num; int n, m; scanf("%d", &n); for (int i = 0; i < n; ++i) { scanf("%d", &arr[i]); } sort(arr, arr + n); scanf("%d", &m); for (int i = 0; i < m; ++i) { scanf("%d", &num)..

article thumbnail
[C++] 백준 1764번 듣보잡
알고리즘 2019. 9. 9. 20:26

문자열 처리 문제입니다. N개의 문자들과 M개의 문자들에서 같은 문자를 찾아서 개수와 문자를 출력해야 합니다. vector v1에 N개의 문자들을 전부 넣고 정렬해줍니다. 그리고 M개의 문자를 찾을 때 binary_search를 통해 vector v1안의 값과 비교를 합니다. 같을 경우 vecotr v2에 문자를 넣어줍니다. 최종적으로 vector v2를 정렬하고 v2의 사이즈를 출력한 후, 문자들을 출력해주었습니다. #include #include #include #include #include using namespace std; int main(int argc, char *argv[]) { int n, m; string s; vector v1; vector v2; cin >> n >> m; v1.r..

검색 태그