일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 문법
- 지식나눔강좌
- tipssoft
- Javascript
- Kotlin
- 함수
- Tips프로그래밍강좌
- c
- VS ERROR
- 포인터
- Visual Studio
- 연산자
- CS
- Win32
- c#
- Programming
- 배열
- c++
- doit코틀린프로그래밍
- 알고리즘
- Tips강좌
- 프로그래밍
- 티스토리
- 김성엽
- 이지스퍼블리싱
- Windows
- 리뷰
- 백준
- Direct2D
- Desktop
- Yesterday
- Today
- Total
목록DEV (265)
F.R.I.D.A.Y.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/32jux/btqAQkWyBr3/WMHmKggCiorogLzPBwWxtK/img.png)
비트 연산자 : 메모리 크기 줄이기 최근 비트 연산자에 대한 질문을 들어온지라, 오늘은 비트 연산자에 대해 알아봅니다. 더보기 # 들어가기에 앞서.. 비트 연산자는 프로그래밍에 있어 고급 기술이라 분류할 수 있을 것 같습니다. 따라서 이해도.. pang2h.tistory.com 위 포스트 마지막에 비트 연산자로 함수에 값을 넘기는 이유에 대해 잠깐 살펴봤습니다. 함수에 값을 전달하는 방법은 여러 가지가 있습니다. 단순 값만 넘길 수도 있고, 참조를 넘길 수도 있습니다. 여기에선 '값'을 넘기는 방식이 아니라 값을 어떻게 넘겨야 잘 넘길 수 있을지를 알아봅니다. # 비트 연산자를 선행으로 알고 있어야 합니다. 함수에 값 전달하는 방식 우리는 일반적으로 인자 하나에 값 하나를 넘기는 1 대 1 방식을 취합니..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cUvqWx/btqAtBFhaL1/KXtk85dn2GEOfCjCNPhM3K/img.png)
최근 비트 연산자에 대한 질문을 들어온지라, 오늘은 비트 연산자에 대해 알아봅니다. 더보기 # 들어가기에 앞서.. 비트 연산자는 프로그래밍에 있어 고급 기술이라 분류할 수 있을 것 같습니다. 따라서 이해도 안 되는데 처음부터 배울 필요는 없습니다. 그래도 배워두면 프로그래밍 능력의 초석을 단단히 다질 수 있을 것이란 말을 드리고 싶습니다. 비트 알아보기 비트 연산자를 알아보기 전에, 우리는 비트에 대해 알아볼 필요가 있습니다. 비트란 정보의 가장 최소의 단위로서 이 비트가 8개 모여 1바이트가 됩니다. 예를 들어 아래 값이 char 타입의 변수에 들어있다고 합시다. ' 15 ' 이 숫자 15의 비트 패턴은 어떻게 될까요? #include int main(void){ unsigned char ch = 15..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/m6Fyc/btqAzzg6GH6/koS3MF0umgq2uLAKBxrvxk/img.png)
비트 연산자의 종류와 연산 방법을 알아봅니다. 비트 연산자 & (비트 AND, 비트곱) 비트 AND연산자는 양쪽 피연산자(operand) 모두 참값이어야 1을 반환했던 논리 AND(&&) 연산자와 비슷합니다. 양쪽 두 값의 동일 위치에 존재하는 비트의 값이 모두 1인 경우에 해당 위치의 비트를 1로 하여 반환합니다. A B 연산자 결과 1 0 & 0 1 1 1 0 1 0 0 0 0 이 특성을 이용한 연산 표는 다음과 같습니다. A 연산자 B Result 1001 & 1010 1000 (0x08) 1100 0010 0000 (0x00) 1110 1101 1100 (0x0C) 더보기 # &의 이름은 앰퍼샌드라고 부릅니다. 앰퍼샌드 - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org | (비트 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WDktp/btqAiW99Ywf/jLRpxNEqkoJCi3p1pYAJV0/img.jpg)
C언어의 꽃이라 불리는 포인터는 그 사용의 범위가 넓은 만큼, 많은 초보 개발자들이 힘들어하는 문법이기도 합니다. 오늘은 이러한 포인터 중에서도 특별한 void 포인터에 대해 알아봅니다. 모든 포인터[# typedef된 자료형 제외]는 기본 자료형 뒤에 *(asterisk)가 표시되어 있습니다. void 포인터이니 먼저 void 자료형에 대해 알아봅니다. void 일전에 main 함수의 반환 타입은 int가 표준이라는 포스트를 작성한 적이 있습니다. void도 결국은 반환 타입입니다. 그렇다면 void는 어떤 것을 반환할까요? 정답은 '아무도. 아니, 작성자 본인만 안다'입니다. void 타입은 많은 사람들이 반환 타입이 존재하지 않으면, 달리 말해 반환할 대상이 없다면 void를 작성한다고 설명합니다...
malloc VS calloc 동적할당은 프로그램에 조금만 규모가 생기면 잘 사용하게 되는 기술로 C언어에서는 함수를 이용해 동적할당을 받는데요, 동적할당을 하는 함수로는 대표적으로 아래와 같은 것들이 있습니다. malloc calloc real.. pang2h.tistory.com 위 포스트에 댓글로 들어온 질문입니다. malloc 함수를 사용할 때와 달리 왜 calloc 함수는 두 개의 인자를 받아야 할까요? calloc() 이전 포스트에서도 말한 것과 같이 calloc 함수는 malloc 함수로 받은 메모리 공간을 0으로 초기화하여 메모리 시작 주소를 반환하는 함수입니다. 인자 두 개가 필요한 것은 메모리 공간을 0으로 초기화할 때 필요합니다. 다음 코드를 보겠습니다. #include int mai..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1mynK/btqz13vvak2/xk2Q09SkXfWSbcSAE89YNK/img.png)
조금 복잡한 계산들. 즉, 복잡한 수식들을 반복해서 작성하기는 여간 귀찮은 것이 아닙니다. 그래서 우리는 전처리 명령어(define)를 이용해서 매크로 함수로 그 수식을 대신하곤 합니다. 이번 포스트에서는 이 매크로 함수를 작성할 때 무엇을 주의해야 하는지 알아봅니다. 매크로 함수 일단 아래 코드를 예시로 들겠습니다. 간단히 두 수를 더하는 함수를 만들었다고 합시다. #include int add(int a, int b){ return a +b; } int main(void){ int a,b; scanf("%d %d", &a, &b); printf("%d + %d = %d\n", a, b, add(a,b)); return 0; } 우리 블로거는 add 함수를 이용하는 것은 프로그램 속도에 영향을 주기 때..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/A6JoO/btqzYpMM0bb/ucvPv7CpLhGBIXkIpupVF1/img.png)
문제를 해결하는 데 있어서는 많은 방법이 있습니다. 프로그래밍이란 결국 문제를 해결하는 과정을 순차적으로 나열한 것이라고 봐도 무방하겠지요. 오늘 포스트에서는 동적 계획법, 다르게 말하면 다이나믹 프로그래밍(Dynamic Programming, DP)에 대해 알아봅니다. Q. 피보나치 수 구하기 갑자기 웬 피보나치 수를 구하느냐구요? 동적 계획법을 설명하는 가장 간단하면서도 이 기술을 처음 접하는 사람들이 이해하기 쉬운 문제이기 때문입니다. 위 문제를 구하라고 한다면 대체적으로 아래와 같은 두 가지 방법 중 한 가지를 이용할 겁니다. // # F[1] = F[2] = 1; int fibonacci1(int n){ // 재귀 함수를 이용한 방법 if(n > 2){ return fibonacci1(n-1) ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/batxFx/btqzR23smGH/r3MgCEL1OkfptcuXNW8Wa0/img.png)
11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 입력받은 동전들의 가치로 입력받은 금액을 만드는 동전 개수에서 가장 개수가 적은 값을 출력하는 문제입니다. 문제의 알고리즘 분류를 보면 과 이 들어가 있습니다. 문제 해결에 앞서 그리디 알고리즘에 대해 알아봅니다. 그리디 알고리즘 그리디 알고리즘을 간단히 설명하면 현재 상황에서 가장 최선의 값을 선택하는 알고리즘으로 아래와 같은 상황에서 A 루트를 선택하는 경우입니다. 전체를 보았을 때 B 루트가 최..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/B5BrE/btqzOmV4V1d/udRckcputlQA2tJ4fDIXCK/img.jpg)
우리나라 많은 사람들이 이용하는 Windows 운영체제는 주기적으로 업데이트를 거쳐 다양한 기능을 추가로 제공합니다. 운영체제를 다시 설치하지 않는데 어떻게 새로운 기능이 추가될 수 있을까요? # 이전 에 이어서 작성하는 포스트입니다. Callback 사전에서의 Callback 정의는 다음과 같습니다. 프로그램을 작성하는 과정에서도 콜백(Callback)이라는 기술을 사용합니다. Node.js가 프로그램을 실행하는 방식이 콜백 함수가 다른 콜백 함수를 호출하는 식으로 이루어진다고 합니다. 프로그래밍에선 아래와 같은 기능을 콜백 함수라고 부릅니다. "유용한 함수를 컴파일해 배포했습니다. 사람마다 원하는 세부 기능이 다를 수 있으므로 본인의 함수 안에서 사용자가 원하는 함수를 직접 작성할 수 있도록 공간을 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b2hp9k/btqzK07tgWa/PUbXk8xnBRyJceNTuyGkh0/img.jpg)
길벗에서 출판한 책 에서 처음으로 나오는 알고리즘은 스택을 이용한 주가 스팬 계산입니다. 마침 스택에 대한 포스트도 연이어 작성 중인 와중에 이 책을 읽고 있어 잘됐다 싶어 포스트 주제로 선정하게 되었습니다. 주가 스팬을 구하는 기본적인 알고리즘 구조는 책에서 보실 수 있습니다. 저는 이 책에서 선보이는 의사 코드(pseudo code)를 C언어로 재구성하고자 합니다. 주가 스팬? 먼저 문제를 풀어보기 전에 주가 스팬이 무엇인지 알아봅니다. 주가 스팬은 다음과 같습니다. 왼쪽과 같은 주식 그래프가 존재한다고 생각해봅시다. 이때 1번 그래프는 앞에 주가 스팬을 판단할 값이 존재하지 않으므로 1번의 그래프 주가 스팬은 1입니다. 2번 그래프는 1번 그래프보다 값이 크므로 주가 스팬은 2입니다. 이는 5번 그..