일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- lis
- 세그먼트 트리
- SSAFY
- 우선순위 큐
- BFS
- 순열
- 피보나치 수
- 완전 탐색
- 그리디
- 링크드리스트
- Knapsack
- 이분 탐색
- 문자열
- BeautifulSoup
- dfs
- 시뮬레이션
- 백트래킹
- DP
- 빠른 입출력
- 메모리풀
- 중복 순열
- 재귀
- 클래스
- 분할 정복
- 크루스칼
- 큐
- MST
- 비트마스크
- 스택
- 조합
- Today
- Total
목록분류 전체보기 (156)
작심 24/7
10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 � www.acmicpc.net vector의 pair기능과 compare함수를 이용하면 쉽게 풀 수 있는 문제이다. compare 없이 그냥 sort를 해주면 vector의 first를 기준으로 정렬되기 때문에 second.first(나이)가 같으면 second.second(인덱스 값)이 증가하는 순으로 정렬시키도록 compare함수를 작성해주면 끝 #include #include #include #include using namespace std; vector v; bool c..
코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램�� programmers.co.kr level 2 길래 가벼운 마음으로 시작했다가 무거운 마음으로 겨우 끝냈다. 문제의 조건을 꼼꼼히 읽어봤으면 더 빨리 끝낼 수 있었을까..? 1. HEAD를 비교할 때 소문자로 바꾸어 준다 2. NUMBER는 최대 5개의 숫자로만 이루어져 있다 3. NUMBER의 앞부분에 0이 있으면 일단 size를 체크해 뒀다가 나중에 출력 시 앞에 더해준다 4. HEAD, NUMBER, TAIL의 구분을 명확히 해야 한다 ex) aBc009dd78 -> HEA..
2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 1. 산술평균은 배열을 입력 받을 때 sum에 계산해주고 N으로 나눈 값을 precision(0)을 이용해 출력한다. 2. 중앙값은 오름차순 정렬된 상태의 배열의 N/2번째 값을 출력한다. 3. 최빈값을 구하려면 먼저 배열을 오름차순으로 정렬해준 뒤 그 값에 따른 카운트를 저장해주기 위해 pair를 이용한다. vector를 선언하여 pair로 해당 수와 그 수의 카운트 값을 저장해준다. 동시에 카운트 값의 최대 값을 cnt_max에 계속 갱신해준다. 최빈값이 여러개 있을 경우엔 두번째로 작은 수를..
10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 계차수열을 이용하는 문제이다. 그러나 그냥 cin cout을 써서 제출하면 시간 초과가 걸린다. printf로 바꾸면 되지만 c++ 입출력을 그대로 쓸 거라면 ios_base::sync_with_stdio(false); -> C 표준 stream과 C++ 표준 stream의 동기화를 끊는다. (c, c++ 입출력 섞어 쓰기 안됨) -> C++ stream은 독립적인 버퍼를 갖게 된다. => 사용하는 버퍼의 수 줄어들어 실행 속도 향상 cin.tie(NULL); -> cin을 cou..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2X06U/btqElks258s/LEhUP5c1kkdPdXPa9ilRf1/img.jpg)
#include using namespace std; int main() { int arr[12] = { 1, 3, 2, 4, 3, 2, 5, 3, 1, 2, 3, 4 }; int cnt[5] = { 0 }; //원소의 범위만큼만 정의한다 int N = 12, cnt_len = 5; //계수 정렬 for (int i = 0; i < N; i++) cnt[arr[i] - 1]++; //원소의 크기에 따른 개수 카운트 for (int i = 0; i < cnt_len; i++) { while (cnt[i] != 0) { cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/6hOSW/btqEjDs3Qyy/i68zHsJCujgguwk4qXDYXk/img.jpg)
#include using namespace std; void heapify(int arr[], int N, int parent) { int child1 = parent * 2 + 1, child2 = parent * 2 + 2; int Max = parent, temp = 0; if (child1 < N) { if (arr[parent] < arr[child1])Max = child1; } if (child2 < N) { if (arr[parent] < arr[child2]) { if (arr[child1] < arr[child2]) { Max = child2; } } } if (Max != parent) { //부모가 자식보다 더 작으면 교환한다 temp = arr[Max]; arr[Max] = ar..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bL7aO9/btqEinpENup/mEPuWCetzpvM4wqKRsKKM0/img.jpg)
#include using namespace std; int arr[8] = { 21, 10, 12, 20, 25, 13, 15, 22 }, sorted[100]; void mergeSort(int st, int en){ if (st >= en) return; int mid = (st + en) / 2; mergeSort(st, mid); mergeSort(mid + 1, en); int i = st, j = mid + 1; for (int k = st; k