일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Machine Learning
- 해시테이블
- 코딩테스트
- cors
- 자바스크립트
- 프로세스
- 프로그래머스
- 웹팩
- GraphQL
- 연결 리스트
- 타입스크립트
- 자료구조
- RxJS
- APOLLO
- pytorch
- 연결리스트
- 포인터
- vue3
- 이진탐색
- 릿코드
- C
- 큐
- 컨테이너
- 브라우저
- alexnet
- 알고리즘
- RT scheduling
- 스택
- 배열
- 프론트엔드
- Today
- Total
목록분류 전체보기 (164)
프린세스 다이어리
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rS2Yg/btrfDhGtzSP/JEilseg4571Q4Dq8APAN2k/img.png)
1. 2차원 배열 2차원 배열은 행렬 데이터를 표현할 때, 그래프 알고리즘을 처리할 때, 다수의 실생활 데이터를 처리할 때 등 사용된다. 흔히 우리가 보는 표 구조가 2차원 배열과 흡사하다. 2차원 배열은 1차원 배열이 중첩되었다는 의미로, [] 대괄호를 두 번 연속하여 쓴다. 자료형 배열 이름[행][열] = { {값, 값, 값,... }, {값, 값, 값,...},... } 자료형과 배열 이름을 정해주고, 행과 열이 어느 정도의 크기를 가지고 있는지 써 줘야 한다. 가령 가로 10, 세로 10의 크기를 가지고 있는 100개의 정수형 값이 들어가는 2차원 배열이면 int a[10][10]; 라고 정의해준다. 초기화하고 싶은 값이 있다면 {} 중괄호를 중첩하여 값을 넣어준다. 2차원 배열 또한 인덱스는 0..
1. 메모리의 서로 다른 4가지 영역 프로그램을 실행하기 위해서는 일단 프로그램이 메모리에 적재돼야 한다. 그러고 나서 CPU가 메모리를 한 줄 한 줄 읽어서 프로그램을 실행하는 것. 따라서 특정 프로그램이 실행되려면 프로그램을 충당할 만큼의 메모리 공간이 필요하다. 흔히 8G, 16G 컴퓨터 메모리가 있는데, 프로그램을 하나 클릭해서 실행하려고 하면 프로그램이 메모리에 적재돼서 돌아간다. 일반적인 컴퓨터의 운영체제는 메모리 공간을 4가지로 구분하여 관리한다. 이 공간들은 서로 다른 역할을 가지고 있다. 코드 영역 한 줄 한 줄 실행할 수 있는 소스코드 데이터 영역 변수 중에서 전역 변수와 정적 변수를 담고 있다. 힙 영역 동적 할당 변수를 담는다. 스택 영역 함수마다 담고 있는 지역변수, 매개변수 등을..
1. 문자열의 개념 앞서 살펴보았듯 C에서는 문자열이 따로 없고 문자의 배열로 이를 표현한다. 특이점은 문자열은 컴퓨터 메모리 구조 상 마지막에 널(null) 값을 포함한다는 점이다. 어떠한 값도 의미 있지 않다는 의미다. 0 1 2 3 4 5 6 7 8 9 H I E U N J I N ₩0 (\0) null값이 들어가는 이유는 문자열의 마지막임을 알리기 위해서다. 그래서 printf() 함수를 실행하면, 컴퓨터는 내부적으로 null값을 만날 때까지 출력하는 것이다. 2. 문자열 리터럴과 포인터 문자열 형태로 포인터를 사용할 수 있다. 배열 형태가 아닌, 포인터 자체에 문자열을 마치 상수처럼 읽기 전용으로 넣는 것이다. 이 때, 큰따옴표 안에 문자열을 넣게 되는데 이걸 문자열 리터럴 이라고 하고, 컴파일..
1. 아스키코드 C에서 문자는 아스키코드를 따른다. 아스키코드는 0~127 중에 1바이트로 구성되며, 주요 문자를 출력하도록 해 준다. 0 ~ 9 48 ~ 57 A ~ Z 65 ~ 90 a ~ z 97 ~ 122 #include int main(void) { char a = 65; printf("%c\n", a); } 이렇게 아스키코드로 65에 해당하는 하나의 문자를 바로 출력하도록 할 수도 있다. 문자 입출력에서 형식 지정자로 %c를 사용한다. 컴퓨터는 결국 내부적으로 숫자로 처리하고 있다는 것이다. 모든 문자열은 내부적으로 숫자로 표현되기 때문에 int형을 사용하여 문자를 입력받을 수 있다. 2. 버퍼가 무엇인가 사용자로부터 1개의 문자를 입력받을 때는 get character 라는 의미로 getch..
1. 포인터의 개념 이전까지 공부한 변수는 그 자체로 자신의 자료형에 맞는 값을 저장한다. int, double, char 등이 그 예시다. 포인터는 메모리의 주소 값 자체를 저장한다. int형 변수를 만들었다고 하면, 컴퓨터 어딘가에 int가 저장된 공간이 있을 것이고, 그것의 메모리 주소를 가리키고 있는 포인터도 있다. 포인터는 메모리 주소의 값을 가지기 때문에 컴퓨터 메모리에 바로 접근할 수 있다. int a = 5; int 5 값을 가지는 a 변수가 있고 이것의 메모리 주소는 0xAFB03912 라고 가정해 보자. int *b = &a; 포인터는 int *b = &a; 처럼 선언할 때 * 연산자를 사용하여 포인터 변수임을 표현한다. 이 의미는 포인터 변수 b가 a의 메모리 주소를 가리키고 있다는 ..
1. 배열을 사용하는 이유 여러 개의 숫자가 있는 경우, 동일한 자료형을 여러 개 담는 기술이 필요하다. 0 1 2 3 4 5 6 7 8 9 6 5 4 3 9 8 0 1 2 7 위에 줄은 인덱스, 밑에 줄은 데이터다. 이 경우 데이터가 모두 int 형이면 int형 한 개당 4 bytes 이므로 총 40 bytes이다. 2. 배열의 선언 및 접근 방법 자료형 배열명[배열의 크기] = {초기화 값}; 여기에서 초기화 값은 있을 수도, 없을 수도 있다. 배열의 크기가 3이면 초기화 값을 다음과 같이 넣어줄 수도 있고, int array[3] = { 1, 2, 3 }; 배열의 크기에 상관없이 모든 값을 0으로 넣어주고 싶다면 0 하고 ', ' 콤마를 넣어주면 알아서 전체 원소가 0으로 초기화되어 들어간다. in..
1. 함수 기본 #include void random(int input) { printf("말머리 붙이기: %d\n", input); } int main(void) { random(3); random(5); random(6); return 0; } 어떤 로직을 반복해서 처리하고 싶을 땐 함수를 따로 빼서 만든다. main 함수에서는 만들어 둔 함수를 불러와서 호출한다. 말머리 붙이기: 3 말머리 붙이기: 5 말머리 붙이기: 6 위와 같은 결과가 나온다. 2. 더하기 함수 #include int add(int a, int b) { return a + b; } int main(void) { printf("%d \n", add(10, 25)); return 0; } add 함수의 인자만 바꿔서 printf 로..
1. 반복문 - for문 #include int main(void) { int sum = 0; for (; 1;) { int x; scanf("%d", &x); if (x == -1) { break; } sum += x; } printf("%d\n", sum); return 0; } for문에 저렇게 (;;)또는 (;1;) 이렇게 넣으면 항상 참이 됨. 그래서 어떤 조건을 걸지 않는 한은 무한루프에 빠진다. 위 로직에서는 정수형 입력값을 조건 없이 계속 받으면서 -1 입력값이 들어오면 이전에 입력했던 값을 모두 더해서 출력해주고 있다. 2. 반복문 - while문 #include int main(void) { int n; char a; scanf("%d %c", &n, &a); while (n--) { ..