전체 글102 [boj 10989] 카운팅 정렬 이 정렬법은 O(n+k)의 시간 복잡도를 가진다. 이때 k는 정렬하고자 하는 수 배열의 최대값이다. n개의 배열을 한 번 훑으며 개수를 체크해야 하므로O(n)인데 최대값 k에 따라서 메모리가 증가한다. 알고리즘 count배열을 선언한다. 이때 배열의 크기는 정렬하고자 하는 수의 최대값으로 정한다. #include #include int main() { int n; scanf("%d", &n); int input; int count[10000]; // 초기화 해야함 memset(count, 0, 10000*sizeof(int)); // 입력을 어레이로 받지 않고 단일 int로 받는것에 주의 for(int i=0;i Algorithm 2022. 7. 20. call by value, address, reference 차이점 정리 call by value, address, reference 차이점 정리 Call by Value (값 호출) 함수에 인자를 넘겨줄 때, 변수의 값을 넘겨준다. #include void swap(int a, int b) { int tmp; tmp = a; a = b; b = tmp; printf("In func: a=%d, b=%d\n", a, b); } int main() { int a=1; int b=2; printf("main: a=%d, b=%d\n", a, b); swap(a, b); printf("After func: a=%d, b=%d\n", a, b); } 실행시켜보면, 함수를 빠져나왔을 때 값이 변하지 않았음을 확인할 수 있다. 즉 주소를 전달한 게 아니라 값만 함수에 전달했기 때문에 함.. PL/C++ 2022. 7. 19. lvalue와 rvalue의 이해, 증감연산자와 앰퍼센드 연산자 lvalue와 rvalue의 이해, 증감연산자와 앰퍼센드 연산자 l-value와 r-value left value와 right value를 의미하며, int a = 3; 같은 식에서 왼쪽의 a가 l-value, 오른쪽이 r-value이다. 즉 l-value: 식 이후에도 남아있는 값. 주소를 가지고있음. r-value: 메모리 주소가 없고, 표현식 범위에만 있는 임시 값. 임시 변수! 예를들면 if(a PL/C++ 2022. 7. 19. STL sort 함수 사용법 헤더를 인클루드 해야한다. C++ STL에서 제공한다. O(NlogN) 시간 복잡도를 가진다. 퀵정렬은 피봇을 어떻게 잡느냐에 따라 최악의경우 O(N^2)의 시간 복잡도를 가지지만 sort 함수의 알고리즘은 최악의 경우에도 O(NLogN)을 보장하는 intro sort로 구현되어있다. 사용법 sort(배열 시작주소, 배열 끝주소+1); 로 사용한다. 즉, 배열의 원소가 n이라면 sort(arr, arr+n)으로 사용하면 된다. 아래는 사용 코드 예시 #include #include #include using namespace std; int main() { int len = 5; int arr[len] = {1,3,5,2,4}; sort(arr, arr+len); for(int i=0;i PL/C++ 2022. 7. 19. 브레이크포인트 확인/설정/삭제 브레이크포인트 걸기 b *0x8060480: 주소에 걸기 b *main: 메인함수에 걸기 b 15: 15번째줄에 걸기 브레이크포인트 확인 info b: 모든 브레이크포인트 나옴 브레이크포인트 활성화 / 비활성화 enable br 1: 1번 브레이크포인트 활성화 disable br 1: 1번 bp 비활성화 브레이크포인트 삭제 d 2: 2번 브레이크포인트지움 d: 모든 브레이크포인트 지움 GDB 2022. 7. 18. scanf 사용시 버퍼에 남은 linefeed 처리 scanf 사용시 버퍼에 남은 linefeed 처리 3 a 위와 같은 인풋을 아래의 scanf로 받는다고 하자. scanf("%d", &num); scanf("%c", &ch); 결과는 str에 a 캐릭터가 들어가지 않고 빈 문자열이 들어간다. scanf가 3을 받고나서 버퍼에 \n가 남아있는 상태가 되고, 두번째 scanf가 \n을 받고 끝내버리기 때문이다. 이를 방지하기 위해서는 캐릭터를 입력받는 scanf의 포맷스트링 앞에 ' ' 공백을 추가해주면 된다. scanf(" %c", &ch); 버퍼 앞의 공백, \n, \t가 모두 무시된다. PL/C++ 2022. 7. 14. 소장 내 균 과증식(SIBO)에 대해 Introduction 꽤 오랬동안 SIBO (Small Intestinal Bacterial Overgrowth) 를 앓았다. 현재는 다 치료되었고, 그간 경험한 것들, 연구한것들과 개인적인 생각들을 정리한다. 증상 영양결핍 세균이 탄수화물, b12등의 영양소를 소비하여 성장한다. 결과로 우리 몸이 흡수할 영양분이 적어져 영양결핍이 오기 쉽다. 특히 칼로리부족으로 체중이 빠지는 증상이 나타날 수 있다. 브레인포그 (brian fog) 및 우울증유발 장은 우리 뇌와 깊게 연결되어있다. 소화가 되지 않고 장이 불편해지면 정신이 맑지 못하고 흐리멍텅한 상황이 지속될 수 있고, 세로토닌대사에 문제가 생겨 우울증이 생길 수 있다. 지방흡수율 감소 세균이 간 담즙을 분해하여 지방흡수가 어려워진다. 견과류, 고등어.. Life study 2022. 7. 12. 우분투에서 scanf()로 EOF 입력하기/받기 우분투에서 scanf()로 EOF 입력하기/받기 scanf() 함수로 EOF 받기 입력값의 길이를 모르고 형식만 알 때, 예를 들어 아래와 같이 정수 3개가 공백 간격으로 t번 반복된다고 하자. 1 2 3 3 4 5 ... 3 3 2 t번을 알 수 없을 때, scanf를 while문 안에 넣어 EOF를 탐지할 수 있다. while(scanf("%d %d %d", &a, &b, &c)!=EOF) { // 대충 a, b, c로 무언가 하는 코드 } 우분투 콘솔에서 EOF 입력넣기 Ctrl+d를 두 번 입력해주어야 한다. tmux 사용 시에는 shell exit을 일으킬 수 있다. PL/C++ 2022. 6. 29. 포인터변수의 이해와 주소연산자 포인터변수의 이해와 주소연산자 엠퍼센드 연산자의 용례 엠퍼센드 연산자는 아래의 3가지로 쓰인다. & bitwise and 연산자로서 사용 주소연산자로 사용 int* ptr = &b; (주소를 리턴하는 연산자) 레퍼런스변수로서 사용 이중 두 번째 주소연산자로서 사용하는 경우를 알아보자. 포인터와 &의 사용 포인터는 주소값을 저장하는 변수고, &는 주소값을 리턴하는 연산자다. #include int main() { int val = 10; int* ptr; ptr = &val; // 포인터는 주소값을 저장하는 변수 } 포인터 변수를 선언할 때 int*등을 쓰는데, 이때의 int는 변수의 자료형이 int라는 뜻이 아니라, 포인터 변수의 주소가 가리키는 값이 해당 자료형이다라는 뜻. PL/C++ 2022. 6. 28. 배열과 포인터의 공통점과 차이점 배열과 포인터 배열과 포인터는 표현에서 비슷한 점이 많다. 배열 표현식과 포인터 표현식을 interchangably 쓸 수 있다. #include int main() { int val = 10; int* ptr; int arr[3] = {1,2,3}; ptr = &val; // arr = &val; // 얘는 안된다. arr변수는 '배열'로 선언되었기 때문. // 한번 세팅하면 주소값을 바꿀 수 없는 const pointer와 비슷한 느낌? printf("ptr value: %x\n", ptr); // 주소값 printf("ptr pointer: %d\n\n", *ptr); // 10 printf("ptr[0]: %d\n", ptr[0]); // 포인터를 배열처럼 printf("*(arr+.. PL/C++ 2022. 6. 28. 위배출과 유문반사의 이해 기능성 소화불량, 원인파악 나는 헬리코박터균 감염으로 인해 생겼을 것이라 추정되는 기능성 소화불량을 앓고있다. 소화가 안되는 원인을 파악해 소화불량을 개선하고자 관련 내용을 정리했다. (현재 168cm / 55kg) 구체적으로는, 조기포만감과 식후불편감이 느껴지는 이유를 이해하기 위한 글이다. 용어정리 위적응: 위가 음식물이 들어왔을 때 늘어나는 기능 위배출: 위에서 십이지장으로 음식물을 배출시키는 기능 유문: 위와 십이지장을 연결하는 근육조직 조기포만감의 원인 식후 얼마 먹지도 않았는데 배가 부른듯한 느낌이 드는 이유는 위가 음식물에 맞춰 늘어나지 않는, 위적응 기능의 저하로 본다. 헬리코박터감염, 위염, 위궤양 등의 이유로 염증이 생겨 위가 정상작동하지 않을 수 있다. 더부룩한 소화불량의 원인 위에서.. Life study 2022. 6. 28. 위산저하 증상, 관련질환, 치료 위산의 적정 pH 위산의 pH는 1에서 2사이의 수치일 때 이상적이고 pH 3까지도 정상 범위로 본다. 스트레스, 건강악화, 위염, 헬리코박터균 감염 등의 이유로 위산이 적절히 분비되지 않는다면 pH가 4 이상으로 올라갈 수도 있고 이를 위산저하라 한다. 위산과다와 위산저하증 차이 위산과다는 소화불량이 있는 경우가 많지 않으며, 공복에 속쓰림이 느껴지는 경우가 흔하다. 위산저하는 소화불량이 주 증상이다. 식후 불편감이 느껴진다. 위산저하의 문제점 소화불량 저위산증은 위액의 pH를 증가시켜 위장 내에서의 단백질 분해를 느리게 만든다. 또한 높은 pH의 Chyme(유미즙)은 십이지장의 소화액 분비자극을 일으키기에 충분하지 않아서 위배출능을 저하시키고, 오래 머물러있는 위장 내 음식물로 인해 위벽이 자극받는다.. Life study 2022. 6. 27. 이전 1 2 3 4 5 6 7 8 9 다음