일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 2261번
- DFS
- DFS(Depth First Search)
- 이분 그래프(Bipartite Graph)
- 큐(Queue)
- BFS(Breadth First Search)
- 다익스트라 알고리즘(Dijkstra Algorithm)
- 백준 1707번
- 위상 정렬(Topological Sort)
- 백준 2493번
- 스택(Stack)
- 플로이드 워셜 알고리즘(Floyd-Warshall Algorithm)
- 분할 정복(Divide and Conquer)
- 백준 21606번
- 백준 17608번
- 백준 1948번
- 위상 정렬(Topology Sort)
- 그리디 알고리즘(Greedy Algorithm)
- BFS
- 백준 2812번
- 백준 10000번
- 그래프(Graph)
- 동적 프로그래밍(Dynamic Programming)
- 이분 탐색(Binary Search)
- 백준 2504번
- 백준 9012번
- 백준 18352번
- 알고리즘 개념
- DFS & BFS
- 트리(Tree)
- Today
- Total
Always Be Wise
배열(Array) 본문
배열을 이용하면 하나의 변수에 여러 개의 값을 넣을 수 있다.
int main()
{
int arr[5] = {1, 33 , 47, 102, 155};
return 0;
}
위와 같이 변수 이름 뒤에 대괄호를 이용해서 배열을 초기화할 수 있다. 대괄호 안의 숫자는 배열의 크기를 나타낸다.
위의 경우 5개의 값이 들어갈 수 있다는 의미이다. 배열 각각의 값들에 접근하려면 값의 위치를 알아야 한다.
값의 위치는 인덱스로 알 수 있다. 인덱스는 0부터 시작하기 때문에 배열에서 가장 첫 번째 값의 인덱스는 0이다.
#include <stdio.h>
int main()
{
int arr[5] = {1, 33 , 47, 102, 155};
printf("arr 배열의 첫 번째(=인덱스가 0) 값 : %d\n", arr[0]);
printf("arr 배열의 두 번째(=인덱스가 1) 값 : %d\n", arr[1]);
printf("arr 배열의 세 번째(=인덱스가 2) 값 : %d\n", arr[2]);
printf("arr 배열의 네 번째(=인덱스가 3) 값 : %d\n", arr[3]);
printf("arr 배열의 다섯 번째(=인덱스가 4) 값 : %d\n", arr[4]);
return 0;
}
배열은 위와 같이 대괄호 안에 인덱스를 넣어 접근할 수 있다.
위의 경우 대괄호 안에 0을 입력하면 1을 출력하고 1을 입력하면 33을 출력한다.
배열을 초기화하는 방법은 기본적으로 아래와 같다.
int main()
{
int arr1[5] = {1, 33 , 47, 102, 155}; // 선언과 동시에 초기화
int arr2[5] = {5}; // 0 번째 값을 5 로 초기화하고 나머지는 모두 0 으로 초기화
int arr3[5] = {5, 10}; // 0 번째 값을 5, 1 번째 값을 10으로 초기화하고 나머지는 모두 0 으로 초기화
int arr4[5] = {}; // 모두 0 으로 초기화
int arr5[5]; // 초기화 하지 않음
int arr6[] = {11, 22 , 33, 44}; // 배열의 크기가 4로 정해지면서 자동으로 초기화
return 0;
}
만약 배열의 개수를 넘어서는 범위를 출력하거나 배열을 초기화하지 않은 배열을 출력할 경우 쓰레기 값이 나온다.
변수를 선언함과 동시에 변수는 시스템 메모리 상에서 한 부분을 차지한다. 변수의 값을 정해주었다면 해당 메모리 영역의 값은
변수의 값이 되지만, 정해주지 않았을 경우에는 메모리 자체에서 가지고 있는 값을 보여준다. 이 값이 바로 쓰레기 값이다.
일반적으로 변수들은 모두 메모리의 특정한 주소에 무작위로 저장된다. 그런데 배열의 경우는 좀 다르다. 배열의 경우는 선언한
크기만큼 연속적으로 연결되어 있다. 아래와 같은 코드의 경우, arr 배열은 int형이다. 따라서 배열 한 원소당 4바이트의 크기를
갖으며 주소는 4씩 증가한다. arr 배열의 0번째 원소 주소가 1000이라면, 1000~1003까지는 arr[0], 1004~1007까지는 arr[1],
1008~1011까지는 arr[2]가 저장된다.