일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 상월곡동 학원
- c++ 조합
- 고정 소수점
- 백준 1049번
- C++ 9996
- 백준 14246번
- 관리형 학원
- 백준 14246번 K보다 큰 구간
- 월곡중 학원
- 백준 패션왕 신해빈
- 백준 10709
- 백준 1049번 기타줄
- C++ 문자열
- 서울사대부고 학원
- 백준 dfs
- 백준 9375번 패션왕 신해빈
- 백준 한국이 그리울 땐 서버에 접속하지
- 백준 토마토
- OS
- 월곡역 학원
- 성북구 학원
- 월곡중학교 학원추천
- c++ split
- 백준 K보다 큰 구간
- 운영체제
- 상월곡역 학원
- DFS
- 월곡동 학원추천
- 백준 2309번 일곱 난쟁이
- C# 병합정렬
- Today
- Total
목록전체 글 (96)
키베이루's diary
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/UNqV9/btrUL8IDTn9/hLZi41Lw2mIsnDWN4Ozwx1/img.png)
1) 문제설명 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 2) 아이디어 이전에 설명한 조합과 순열을 사용해서 문제를 해결하였다. 입력된 배열을 오름차순으로 정렬한뒤 순열 : 9명의 난쟁이의 키를 입력받고 이를 순열로 인덱스를 바꾸면서 도는동안 난쟁이들의 키의 합이 100이 될 경우 반복문을 멈추고 그대로 앞에 저장된 배열을 출력하였다. 조합 : 2중 for문을 돌면서 난쟁이의 키의 합에서 가짜 난쟁이 2명을 빼고 그 인덱스를 저장한뒤 다시 for문..
Split은 문자열을 특정 문자열을 기준으로 쪼개어서 배열화 시키는 함수의 의미로 사용된다. C++에서는 split() 함수를 지원하지 않기때문에 직접 구현해야한다. #include #include #include #include using namespace std; vector split(string input, string delimiter) { vector ret; long long pos = 0; string token = ""; while ((pos = input.find(delimiter)) != string::npos) { // input문자열에서 delimeter을 찾는다 // 못찾는다면 이 루프는 반복된다. token = input.substr(0, pos); // substr (시작위치..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bqOYYE/btrUMI4sQTC/uOJVYN478DyNDf6A86yhOK/img.png)
조합은 순서가 없이 몇개를 뽑느냐의 갯수를 샐떄 쓰인다. nCr : n명중에 r명을 고른다. = nCr = n! / r!(n-r)! C++에서 이를 재귀 or 반복문으로 표현할 수 있다. 재귀버전 int n = 5, k = 3, arr[5] = { 1,2,3,4,5 }; void print(vector v) { for (int i : v) { cout
합병정렬은 분할 정복(Divide and Conquer)의 알고리즘의 하나이다. 합병정렬의 핵심은 3가지이다. Divide : 입력된 배열을 절반 씩 계속 나눈다. void merge_sort(int left, int right, int[] arr) // 나눠! { // 왼쪽이 오른쪽보다 작을때만 실행하고 // 왼쪽이 오른쪽과 같아지거나 커질경우 재귀가 풀리면서 merge가 실행된다. if (left < right) { int mid = (left + right) / 2; // 처음과 끝을 반으로 갈라서 (처음 ~ 중간) / (중간 ~ 끝) merge_sort(left, mid, arr); // 처음부터 중간까지 나눈다 merge_sort(mid + 1, right, arr); // 중간부터 마지막 까지..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/TNo3R/btrUeKReGl5/CUZcAozVED2etBHkc08sx0/img.png)
C++에서는 STL에서 순열을 지원한다. nPr = n!/(n-r)! 로 경우의 수를 찾는 연산이다. C++에서는 next_permutation과 prev_permutation을 사용하여 순열을 표현한다. next_permutation : 오름차순의 배열을 기반으로 순열을 만든다. prev_permutation : 내림차순의 배열을 기반으로 순열을 만든다. #include #include #include #include using namespace std; void printV(vector& v) { for (int i = 0; i < v.size(); i++) { cout
GC는 Java나 C#에서 메모리를 자동으로 해제해주는 기능이다. C/C++에서는 자주 사용하는 힙영역에 대한 메모리 해제 때문에 Memory leak가 쉽게 일어난다. -> 메모리 조각 발생 C/C++에서는 C-runtime을 사용하여 힙에 객체를 할당하여 자유 메모리 블록을 찾고 쪼개고 재조정하는 탐색, 분할의 과정을 거치는데 C#에서는 Garbage Collector가 사용하지 않는 객체를 알아서 판단하여 메모리를 회수한다. .Net 프레임워크에서 참조 형식의 객체가 할당될 때는 Stack 영역에는 Heap의 메모리 주소(Object를 가리키는 참조값)를, Heap 영역에 실제 값(Object 값)이 할당된다. 그리고 객체가 할당된 코드블록이 끝나면 Stack 영역의 메모리가 회수되고 Heap 영역..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bfEwZy/btrUaWpmGVs/uU7kEiKcVQlgeiguvE99u1/img.png)
컴퓨터 하드웨어 : 프로세서, 메모리, 보조기억장치 프로세서 -CPU, GPU 메모리 - 주 기억장치(RAM), 보조 기억장치(DISK, HDD 등) 주변장치 - 키보드/마우스, 모니터/프린터, 네트워크 모뎀 등 중앙처리장치(CPU : Central Processing Unit/ Central Processor) { CPU = 프로세서 } - 연산 수행 - 컴퓨터의 모든 장치의 동작 제어 중앙처리장치의 구성요소 - Control Unit - Register : 프로세서 내부에 있는 메모리 ( 프로세서가 사용할 데이터 저장, 컴퓨터에서 가장 빠른 메모리) # 용도에 따른 분류 : 전용 레지스터, 범용 레지스터 # 사용자가 정보 변경 가능 여부에 따른 분류 : 사용자 가시 레지스터, 사용자 불가시 레지스터 ..
foreach 문은 인자로 들어온 데이터의 내부 인덱스 끝까지 순환하는 반복문이다. foreach(데이터 형식 변수명 in 배열(문자열)) {}로 사용한다. int [] arr = new int[7] = {1, 2, 3, 4, 5, 6, 7}; foreach(int i in arr){ Console.WriteLine("{0}",i) // 1 2 3 4 5 6 7 출력 } string stringText = "Hello World!"; foreach(char oneCharactor in stringText){ Console.WriteLine("{0} ", oneCharactor)// H e l l o W o r l d ! 가 출력된다. }