myCode/GeneralKnowledge
-
[C++] STL sort 튜토리얼myCode/GeneralKnowledge 2016. 8. 15. 11:31
STL sort 튜토리얼 2015년 10월 13일 hakgb11 댓글 (1개) STL, 소트, sort, sort()1. 정의알고리즘 헤더파일에서 제공하는 STL로써 범위내에서 주어진 범위내에서 원소들을 정렬합니다. 이때 정렬하는 방식(오름차순, 내림차순 등등등)은 사용자가 정의할 수 있으며, 동일한 원소에 대해서는 그 순서가 보장되지 않습니다. 이때 std::sort는 숫자 뿐만 아니라 대소 비교가 가능한 모든 원소에 대해서 정렬을 할 수 있습니다. 즉 int 뿐만 아니라 char, string 역시 정렬이 가능하고, 사용자가 정의한 객체 역시 연산자 오버로딩('
-
[C++] Decimal to BinarymyCode/GeneralKnowledge 2016. 8. 15. 11:26
10진수의 수를 2진수로 변환해보자! 가장 유명한 방법은 while 문을 이용해서 해당하는 십진수의 숫자를 2로 나눠가면서 나머지를 string에다가 붙여가는 방법이다. #include #include std::string toBinary(int n) { std::string r; while(n!=0) {r=(n%2==0 ?"0":"1")+r; n/=2;} return r; } int main() { std::string i= toBinary(10); std::cout
-
KLDP 포스트 하나, 및 기초 함수 구현법 (strcpy, atoi)myCode/GeneralKnowledge 2016. 7. 27. 19:14
https://kldp.org/node/154497 제목은 '알고리즘을 정말 잘해야 프로그래밍을 잘하는걸까요?' 내용은 면접장에 가서 면접관이 테스트 몇개를 내서 strcpy, atoi 등등의 함수를 C로 구현해보라고 했는데 실패해서 그거못했다고 떨어지는게 말이되냐고 불만을 표출하는 글 "나는 보안쪽에서 컨설턴트를 하는 짱짱한 사람이 될건데 어차피 다 만들어져있는 그런걸 왜 내가 알아야지?" 이런 소리를 했다가 다른 개발자들한테 극딜을 맞는 중이다.. 그런 의미에서 같은 노선을 밟지 않기 위해 atoi, strcpy의 구현법을 제대로 알아보자. 참조 - http://albbu.tistory.com/20
-
[C++] 조합(Combination) 구하기myCode/GeneralKnowledge 2016. 6. 6. 19:55
nCk 를 구현해보자. 수학시간에 배웠던 것처럼 평범하게 생각해보면 n!/(n-k)!k! 그러나 이걸 코드로 그대로 구현하는데는 큰 위험이 따른다. n이 조금만 커져도 n!이 int는 물론 long의 한계도 가볍게 뛰어넘는 숫자로 뛰어버린다. 다시한번 수학시간의 기억을 잘 끄집어 내보자. nCk = n-1Ck-1 + n-1Ck 이 식이 기억나는가? 이 식을 토대로 Recursion을 적용한 함수를 구현 해보자. 그러나 이 식도 문제가 있다. Recursion 식이 두개나 들어가면서 수행시간이 2의 제곱 꼴로 비대해진다. 해결책은 바로 Dynamic Programming을 이용하는 것! 참조 - http://karnies.tistory.com/33
-
Towers of HanoimyCode/GeneralKnowledge 2016. 4. 24. 20:53
[하노이의 탑]Recursion하면 약방의 감초처럼 등장하는 개념 삼대장 중의 하나 되시겠다. 나머지는 팩토리얼이랑 피보나치 수열..대략적인 코드는 이렇다.private static void solveTower(int num, int fromPeg, int toPeg, int tempPeg) { if (num > 0) { // move a disc from the fromPeg to the tempPeg solveTower(num - 1, fromPeg, tempPeg, toPeg); System.out.println("Disc moved from " + fromPeg + " to " + toPeg); // move disc from the tempPeg to the toPeg solveTower(num..
-
Tales of Mintrupt - about int* and int[]myCode/GeneralKnowledge 2016. 4. 21. 19:16
일부 C++ 컴파일러에서 비표준으로 지원할 수도 있지만원래는 크기가 컴파일 타임에 완전하게 정해져야 하고메모리 주소도 그냥 알아서 들어갈 거야int*를 int 하나에 대한 포인터가 아니라동적 할당된 배열의 첫 부분을 가리키는 용도로 쓴다고 하면int[]랑 사용할 때는 비슷하지만내부적으로는 많이 다르지 않을까! 지역 변수로 선언된 배열도 마찬가지로스택 포인터에서 상대적인 시작 위치만 가지고 있고그 상대적인 간격(배열 포인터 상수)는 컴파일 타임에 고정되어서 들어감반면에 동적 할당된 배열은 운영체제에다 메모리를 달라고 부탁을 하면운영체제는 사용 가능한 메모리를 마련해서 주소를 C 런타임 라이브러리로 돌려주고라이브러리는 받은 메모리를 다시 잘 쪼개서(보통 운영체제는 메모리는 4K 정도 단위로만 할당해서 줌)실..
-
C scanf 버퍼 문제myCode/GeneralKnowledge 2016. 4. 11. 19:46
int a, b;char cal; printf("두 개의 정수를 입력:"); scanf("%d %d", &a, &b); printf("연산 방법을 입력:"); scanf("%c", &cal); 위와 같은 식으로 코드를 짜고 생각없이 두번째 scanf가 제대로 실행되지않고 프로그램이 끝나버린다. 이유는?문자를 입력 받고 엔터를 치게 되면 입력 버퍼에 엔터가 남아있기 때문에두번째 scanf에 \n이 자동으로 입력된다. 해결법두 scanf 문구 중간에 while(getchar() != '\n');이 코드를 넣으면 버퍼가 비워지고 문제 해결!