일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- deque
- 에라토스테네스의 체
- 비트연산
- 다익스트라
- DP
- dijkstra algorithm
- BFS
- Two Pointers
- 외적
- CCW 알고리즘
- 알고리즘
- 재귀
- recursion
- BOJ
- 에라토스테네스
- binary search
- CCW알고리즘
- 딕셔너리
- 위상정렬
- 소수
- 큐
- 이진 탐색
- 너비우선탐색
- ccw
- Algorithm
- Python
- Bitmasking
- 비트마스킹
- 백준
- 투 포인터
- Today
- Total
목록Programming Language (9)
꾸꾸리
1-0. 들어가기 전에 비트 단위로 연산을 진행하는 비트 연산자는 주로 하드웨어 관련 프로그래밍에 활용되지만, 그 이외의 영역에서도 사용되어 메모리 공간의 효율성을 높이고 연산의 주를 줄이는 요인이 되기도 한다. 그런데 이 연산자의 활용적 측면을 지금 언급하면 이해하는데 많은 부담이 있으므로, 여기서는 일단 연산자의 기능을 이해하는데 초점을 맞추자. 1-1. 비트 연산자의 종류 연산자 연산자의 기능 결합방향 & 비트단위로 AND 연산을 한다. -> | 비트단위로 OR 연산을 한다. -> ^ 비트단위로 XOR 연산을 한다. -> ~ 단항 연산자로서 피연산자의 모든 비트를 반전시킨다. 피연산자의 비트 열을 오른쪽으로 이동시킨다. -> 위의 표에서 > 연산자는 '비트 이동(shift) 연산자'라 해서 비트 연..
1-0. 들어가기 전에 우리는 컴퓨터가 데이터를 2진수로 표현한다는 사실을 알고 있지만 정수, 실수 그리고 문자와 같은 데이터를 2진수로 어떻게 표현하는지 잘 모르고 있다. 이번 기회에 확실히 알아두자! 1-1. 정수의 표현방식 컴퓨터가 정수와 실수 그리고 문자를 표현하는 방식에는 두드러진 차이가 있는데, 먼저 정수의 표현방식에 대해 알아보자.C언어는 보통 하나의 정수를 4바이트로 표현하지만(이후에 자세히 알아보자), 여기서는 1바이트를 기준으로 정수의 표현방식을 설명하겠다.그렇다고해서 달라지는 것은 없다. (크기가 줄더라도 정수의 표현방식에는 변함이 없으니 말이다.) * 정수의 가장 왼쪽에 존재하는 비트는 '부호비트'이다. 컴퓨터가 1바이트 메모리 공간에 정수를 저장하려 한다. 그런데 저장하려는 값이 ..
1-0. 2진수란 무엇인가? 10진수, 16진수란 무엇인가? 컴퓨터는 2진수를 기반으로 데이터를 표현하고 연산도 진행한다. 따라서 2진수를 이해해야 C언어를 보다 정확히 이해할 수 있다.여기서 2진수는 두 개의 기호를 이용해서 데이터를 표현하는 방식이다. 이와 유사하게 열 개의 기호를 이용해 데이터를 포현하는 방식이 10진수이고, 16개를 이용하는 것이 16진수이다. 자세한 설명은 생략하겠습니다.....! 1-1. 데이터 표현단위인 비트(Bit)와 바이트(Byte) '비트'는 컴퓨터가 표현하는 데이터의 최소단위로서 2진수 값 하나를 저장할 수 있는 메모리의 크기를 뜻하는 단위이다.또한 비트를 여덟 개 묶으면 '바이트'라는 단위가 구성된다. 1비트01 1 0 1 0 1 1 0 1바이트 위의 그림은 컴퓨터의..
1-1. 정수입력을 위한 scanf함수의 호출 scanf함수를 이용하면 키보드로부터 다양한 형태의 데이터를 입력 받을 수 있다.우선은 정수의 입력에 대해 알아보자. 12345int main(void){ int num; scanf("%d", &num); // 키보드로 입력한 정수를 변수 num에 저장한다.}Colored by Color Scriptercs 키보드로부터 데이터를 입력받으려면, 데이터의 종류에 맞게 메모리 공간을 미리 할당해야 한다. 따라서 위 코드에서는 scanf함수 호출에 앞서 변수 num을 선언하고 있다.이어서 scanf 함수를 호출하면서, 두 번째 인자로 num을 넘겨주고 있다.(변수 num 앞에 & 연산자가 붙어있음에 주목) 앞 부분에서 printf함수를 소개하면서 %d가 서식문자이고..
1-0. 연산자란 무엇인가? '덧셈'하면 흔히 생각하는 것이 + 기호이다.C언어를 이용해서 특정연산을 요구할 때 사용하는 약속된 기호를 가리켜 '연산자(operator)'라 한다. 12345678#include int main(void){ int num1 = 0; // num1 변수를 선언 및 초기화 num1 = 2 + 4; // 2와 4의 합을 num1 변수에 저장 }Colored by Color Scriptercs 6행에서 덧셈 연산을 수행하기 위한 연산자로 + 가 사용됐음을 알 수 있다. 1-1. 대입 연산자(=)와 산술연산자(+,-,*,/,%) 두 개의 피연산자를 요구하는 연산자를 가리켜 '이항 연산자(binary operator)'라 하는데, 대입 연산자와 산술 연산자는 모두 이항 연산자이다. ..
1-0. 변수란 무엇인가? 수학에서는 정해지지 않은, 그래서 임의의 값을 대입할 수 있는 문자를 가리켜 변수라 한다.C언어의 변수가 의미하는 바도 이와 비슷한다."값을 저장할 수 있는 메모리 공간에 붙은 이름, 혹은 메모리 공간 자체를 가리켜 변수라 한다."따라서 변수라는 것을 하나 만들면(선언하면), 그 변수의 이름을 통해서 값의 저장 및 참조가 가능하고, 저장된 값의 변경도 가능하다. 1-1. 변수의 선언 1234int main(void){ int num; // num이라는 이름의 변수선언}cs 위의 코드에서 볼수 있듯이 다음 문장이 변수의 선언문이다. int num; 이 문장을 구성하는 int와 num이 의미하는 바는 다음과 같다. int 정수의 저장이 가능한 메모리 공간을 할당합니다. num 그 ..
1-0. 주석의 필요성 * 주석(comment) : 프로그램 내에 삽입된 메모. 컴파일의 대상에서 제외가 되기 때문에 주석의 유무는 프로그램의 실행결과에 영향을 미치지 않는다. C언어가 사람이 이해하기 쉬운 언어라 할지라도, 내용을 분석하는 데는 상당한 시간이 걸린다. 이러한 문제점을 최소화하기 위한 목적으로 주석이라는 것이 존재한다. 주석을 다는 것은 프로그램을 분석하는 이들을 배려하는 수단 뿐만 아니라 동시에 프로그램을 구현한 본인 스스로를 배려하는 수단도 된다. ==> 주석은 선택이 아닌 필수다! 1-1. 행 단위 주석 C언어에서 주석을 다는 방식은 두 가지가 있는데, 첫번째 방식은 행 단위로 주석처리 하는 방식이다. 123// 주석처리 된 문장1// 주석처리 된 문장2// 주석처리 된 문장3cs ..
(설치 과정은 생략하겠습니다!) 1-0. hello world! 들여다보기 1234567#include int main(void){ printf("hello world!\n"); return 0;}cs 위 프로그램으로부터 C언어의 기본특성 몇 가지를 이끌어 낼 것이다. 일단 프로그램을 다시 한번 보자."이 문장이 의미하는 바가 무엇일까?"라는 의문을 가지면서 보자. 1-1. C언어의 기본단위인 '함수'의 이해 C언어를 소개할 때 다음과 같은 이야기가 흔히 등장한다."C언어는 함수로 시작해서 함수로 끝난다."C언어로 프로그램을 작성한다는 것은 '함수를 만들고, 만든 함수들의 실행순서를 결정하는 것'이기 때문이다. 우리가 처음 만든 프로그램도 하나의 함수로 구성되어있다. 함수에 대한 완벽하고 구체적인 이해는..
1. C언어는 프로그래밍 언어이다. 사람이 컴퓨터에게 일으키기 위해서는, 컴퓨터와 사람의 대화를 위한 공통의 대화수단이 필요하다.그러나 컴퓨터는 사람의 말을 이해하지 못하고, 사람도 컴퓨터가 인식하는 기계어를 알지 못한다. 한국인 --> 컴파일러 --> 컴퓨터(한국어, C언어 가능) (C언어, 기계어 가능) (기계어 가능) 그래서 나온 해결책이 위와 같은 'C언어와 기계어를 이해하는 컴파일러(compiler)' 이다. [참고]기계어란, 컴퓨터가 이해할 수 있는 0과 1로 구성된 언어체계를 뜻한다. 물론 많은 노력을 통해서 사람도 이러한 언어체계를 습득할 수 있다. 하지만 특별한 목적 없이 이러한 기계어를 익히기 위해서 노력할 필요는 없다. 프로그래밍 언어로 작성한 프로그램을 컴퓨터가 이해할 수 있도록 기..