일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 10953
- All Longest Strings
- Counting cells in a blob
- Sequential Search
- cpp
- codesingal
- markdown
- Numpy
- shapeArea
- 백준
- 파이썬 포렌식
- C++
- 피보나치 수
- Python
- 2750
- baekjun
- 2015 봄학기 알고리즘
- matrixElementsSum
- almostIncreasingSequence
- adjacentElementsProduct
- til
- 파이썬머신러닝완벽가이드
- centuryFromYear
- Daily Commit
- recursion
- codesignal
- 수 정렬하기
- collections.deque
- data_structure
- flask
- Today
- Total
목록Doing/C&C++ 34
Introfor
cpp을 처음 공부하면서 C에 대한 내용도 다시 복습하고 있다. 구조체 부분을 학습하면서 구조체는 사용자 정의 타입으로 여러 데이터 타입을 하나의 타입으로 지정할 수 있다. 그러면 이 구조체는 메모리에 어떠한 구조로 저장되는지 궁금하다. (궁금하지 않더라고 알면 좋다.) 위 소스코드를 아래에서 메모리와 매칭된 그림을 확인할 수 있다. 컴파일러는 프로그램의 속도를 향상시키기 위해 구조체를 메모리에 할당할 때 바이트 패딩(Byte Padding) 규칙을 사용한다. 이 규칙은 구조체 멤버 변수 중 크기가 가장 큰 멤버 변수를 기준으로 나머지 멤버 변수를 할당한다. 위 그림에서 보면 char, int, double 타입이 선언된 것을 알 수 있는데 이 중 8byte를 가지는 duble의 크기가 가장 크므로 do..
이 문제는 위 표에서 보이는 0과 1로 구분된 이미지인 binary image를 가진다. 파란색은 image pixel(1), 흰 색은 background pixel(0)이라고 할 때, 상하좌우 및 대각선방향으로 서로 연결된 image pixel들의 집합을 blob라고 한다. 이 문제는 특정 위치 (x, y)에서 blob이 존재하면 그 blob의 셀 개수를 계산하는 문제다. Solving problem 주어진 위치가 존재하는지 여부 판별 - x 혹은 y의 값이 범위를 넘어갈 경우 0을 반환 주어진 위치가 image pixel 아닌 판별 - image pixel이 아닌 경우 0을 반환 - blob를 구해야하기 때문에 image pixel이 아닌 경우 필요 없음. 위 조건들이 모두 일치하지 않을 경우, 주어..
#include int size = 8; int maze[8][8] = { {0, 0, 0, 0, 0, 0, 0, 1}, {0, 1, 1, 0, 1, 1, 0, 1}, {0, 0, 0, 1, 0, 0, 0, 1}, {0, 1, 0, 0, 1, 1, 0, 0}, {0, 1, 1, 1, 0, 0, 1, 1}, {0, 1, 0, 0, 0, 1, 0, 1}, {0, 0, 0, 1, 0, 0, 0, 1}, {0, 1, 1, 1, 0, 1, 0, 0}, }; int pathWay = 0; int wall = 1; int blocked = 2; int path = 3; int find_path(int x, int y){ if (x=size) return 0; else if (maze[x][y] != pathWay) ..
#include #include typedef struct node{ int data; struct node* next; } Node; int main(){ Node* head = NULL; head = (Node*)malloc(sizeof(Node)); head->data = 1; head->next = NULL; Node* q = (Node *)malloc(sizeof(Node)); q->data = 2; q->next = NULL; head->next = q; q = (Node *)malloc(sizeof(Node)); q->data = 0; q->next = head; head = q; Node *p = head; while(p!=NULL){ printf("%d\n", p->data); p = p..
여러 블로그에서 반복문으로 작성된 코드들만 있어서 공부할 겸 직접 코드를 작성해보았다. 순차 탐색은 한 배열이 주어졌을 때, 거기서 원하는 키값이 존재하는지 찾는 알고리즘이다. 단순 알고리즘으로 사용에는 편리하나 효율적이지 못한 알고리즘이다. 5 4 2 7 0 2 3 9 위에서 이런 식으로 배열이 존재할 때, 이 배열에 key = 2가 존재하는지 확인하기 위해 index = 0인 배열의 값 것부터 순차적으로 key 값과 비교해서 찾는 방식입니다. #include void sequentialSearch(int arr[], int key, int index, int length){ if(index>=length){ printf("없음"); return; } if(arr[index]==key){ printf(..
Reference C언어에서 다루었던 포인터와 비슷한 개념이지만 다르다. 어떤 변수나 상수를 다른 변수가 참조해서 동일한 값을 가지도록 만든다. #include int change_val(int &p){ // 레퍼런스를 통해 전역변수를 선언하지 않고 함수 내의 변수와 연결 가능 p = 3; return 0; } int main(){ int x = 5; change_val(x); int& y = x; int& z = y; printf("x: %d y: %d z: %d \n",x, y, z); y = 10; printf("x: %d y: %d z: %d \n",x, y, z); z = 8; printf("x: %d y: %d z: %d \n",x, y, z); } Result x: 3 y: 3 z: 3 x:..
STL 표준 템플릿 라이브러리(Standard Template Library) C++에서 필요한 자료구조와 알고리즘을 Template로 제공하는 라이브러리 구성 Container, Iterator, functor, Algorith Pair and Vector Pair #include 헤더 파일을 추가해주거나 또는 헤더를 추가해줍니다. Pair는 두 쌍의 자료형을 묶어서 사용하는 것으로 pair형식으로 작성한다. #include #include using namespace std; pair p; int main(){ // how to put in pair // p.first = 1; // p.second = 5; p = make_pair(1,5); printf("%d %d\n", p.first, p.sec..
요셉의 문제 :A부터 J까지의 10명의 사람이 시계 방향으로 순서대로 원을 지어 앉아 있다고 하자. 이때 A부터 시작하여서 4명 간격으로 사람을 그 원에서 뽑아낸다고 하면 그 순서는 어떻게 될 것인가? 결과 : A, E, I, D, J, G, F, H, C, B 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061#include #include typedef struct _node { int data; struct _node *next;} node; node *head; void insertNodes(int k) { node *t; int i; t = (n..
12345678910111213141516171819202122232425262728293031323334353637383940414243#include int max(int x, int y){ return (x>y)? x:y;} int matrixPath(int arr[][4], int i, int j, int *cnt) { if(i==0 && j==0) return arr[0][0]; else if(i==0){ // printf("(((%d,%d)))\n",i,j); return (arr[0][j]+ matrixPath(arr, 0, j-1, cnt)); } else if(j==0){ // printf("((%d,%d))\n",i,j); return (arr[i][0]+ matrixPath(arr, ..
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101#include#include #define FALSE 0#define TRUE 1 int n = 10;int w[3][10] = {0}; int Weight(int k, int p) { if (p