목록SCCC (18)
tony9402
SCCC 스터디 5일차 1月 16日 (수학 어렵다.........................) 1. 수학1 에라토스테네스의 체 - N 이하의 소수를 빠르게 찾는 알고리즘이다. 소수의 배수를 없애는 방식으로 진행한다. 자세한 내용은 여기에서 참고하면 될 것이다. 이 방법을 이용하면 시간복잡도는 O(n log log n)이다. 유클리드 호제법 - 최대공약수(GCD)를 빠르게 구하는 알고리즘이다.나머지 연산을 이용해서 빨리 구할 수 있는데 이에 대한 자세한 내용은 여기에서 참고하면 될 것이다. 에라토스테네스의 체 - 소수인지 판별하는 방식은 거의 동일하지만 소스코드를 작성할때 살짝 다른게 있다. 다른 곳에서 계산과정 중 오버플로우를 방지하기 위해서 사용한다고 들었다. - 에라토스테네스 1. 에라토스테네스의 ..
SCCC 스터디 5일차 1月 15日 오늘은 미세먼지로 인해 전날 스터디 모임이 취소가 됬다. 그래도 배울 내용은 적어 홈스터디로 진행됬다. 1. 분할정복 분할정복은 Divide and Conquer로 문제를 같은 유형의 여러 작은 문제들로 나눈 뒤, 그 작은 문제들의 답을 이용해서 문제를 해결하는 방식을 말한다. 분할정복을 이용하면 시간 복잡도를 줄일 수 있다. 예를 들어, 1부터 100까지 더하는 것을 공식을 이용하지 않고 더한다면 아주 간단하게 O(n)로 더할수는 있다. 하지만 분할정복을 이용하면 O(log n)으로 더 줄일 수 있다. 1 + 2 + 3 + ... + 51 + 52 + 53 + ... + 99 + 100 이를 한번 Divide(분할)을 해보자. 1 + 2 + 3 + ... + 50 +..
SCCC 스터디 4일차 1月 14日 오늘은 기초 자료구조에 대해 공부했다. 1. list STL에 있는 list을 이용하여 구현해봤다. list를 이용한 문제가 잘 안나온다고 하는데 그렇게 어려운것도 아니고 간단한 자료구조이기도 하고 혹시 나오면 당황해서 못짜는 것보단 아는 것이 좋아 list를 이용해 백준에 있는 문제를 풀었다. 2. Graph Graph를 인접행렬로 표현 할 수 있고, 인접리스트로 표현 가능하다. 각자의 장단점이 존재한다. 어느정도 작을땐 인접행렬을 이용해 문제를 풀어도 되고 좀 클땐 인접리스트가 효율적이다. 3. Tree 트리에 가장 큰 특징은 사이클이 없는 연결 그래프라는 점이다. 즉, Tree는 Graph의 일종이다. 또한 트리는 정점이 n개가 있으면 간선은 n - 1개가 있다...
이번엔 선택 정렬, 병합정렬(merge sort), 퀵 소트(quick sort), 카운팅 소트(counting sort)를 직접 구현해보았다. 1. 선택 정렬 -구현 난이도 : ●○○○○ 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include#include#include using namespace std; vector list; int main(){ ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; for (int i = 0; i > input; list.push_back(input); } for (int i = 0; i
3일차에서 최소 힙을 짰었는데 너무 드럽게 짜서 다시 간단하게 짜봤다.또한 최소 힙을 짜면서 최대 힙도 다시 짜봤다. 1. 최대 힙 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#include#include using namespace std; int heap[200000];int Size = 1; void push(int data){ heap[++Size] = data; int idx = Size; while (idx > 1) { if (heap[idx] > heap[idx / 2]) { swap(heap..
SCCC 스터디 3일차 정렬 - 힙 정렬 - 선택 정렬 - 삽입 정렬 - 버블 정렬 - 합병 정렬 - 쉘 정렬 - 퀵 정렬 - 카운팅 정렬 1. 힙 정렬 STL priority_queue를 이용하지 않고 힙 정렬 구현해보기 - 최대 힙 ●●◐○○ (만약 STL을 이용하면 난이도 ●○○○○) - 최소 힙 ●●◐○○ (만약 STL을 이용하면 난이도 ●○○○○) - 수 정렬하기2 ●●◐○○ (만약 STL을 이용하면 난이도 ●○○○○) 2. 삽입 정렬 - 수 정렬하기 ◐○○○○ - 수 정렬하기2 ●●●●● (수 정렬하기2에서는 삽입 정렬를 이용해서 절.대.로 맞았습니다!가 뜨지 못한다.) 3. 합병 정렬(merge sort) - 수 정렬하기2 ●●●○○ 4. 퀵 정렬 - 수 정렬하기2 ●●●○○ (퀵 정렬은 최..
SCCC 스터디 2일차 시간복잡도에 대해 간단히 이해하고 어떤 표기법을 쓰는지 알고 나머지 시간은 구현 time~ 1억번의 연산을 수행할 때 걸리는 시간을 약 1초가 걸린다고 생각하면 된다. 단순 연결 리스트 - 조회, 삽입, 삭제 - O(N) 정렬 - 선택, 버블, 삽입 - O() - 퀵정렬 - O() -> 평균은 O(NlogN) - 힙, 머지. etc - O(NlogN) 스택, 큐 - 삽입, 삭제 O(1) 이분 탐색 - 탐색 - O(NlogN) 힙 - 삽입, 삭제 O(logN) 1. 터널의 입구와 출구 - ●○○○○2. 도깨비말 - ●◐○○○3. 크로스워드 만들기 - ●○○○○4. 그림 비교 - ●◐○○○5. 지뢰 찾기 - ●○○○○6. 비밀번호 발음하기 - ●●○○○7. 고장난 시계 - ●○○○○8..
SCCC 스터디 1일차 STL에 대해 설명을 듣고 간단한 문제를 풀며 공부했다. 내용 간단히 정리 1. memset string.h, memory.h 안에 있으며 초기화 할 값은 바이트 단위이다. (여기서 배운 내용은 아니지만 내가 알고 있는 꿀팁은 int형인 배열에 0x3F의 값을 초기화 한다면 배열에는 0x3F3F3F3F의 값이 들어간다.) int arr[1000];memset(arr, 0x3F, sizeof(arr)); arr[0] == arr[1] == arr[2] == ... == arr[999] == 0x3F3F3F3F 이는 다익스트라 등의 알고리즘에서 많이 사용한다. 2. math.h - 이 헤더파일 안에는 Hypot => sqrt(x^2 + y^2)의 값, 즉 두 점과의 거리를 구하는데 사..