프로그래밍(38)
-
이진 탐색
이진 탐색(Binary Search)은 정렬된 배열에서 특정 값을 찾는 알고리즘입니다. 탐색을 시작할 때는 배열의 중간값을 찾아서 찾고자 하는 값과 비교합니다. 만약 찾고자 하는 값이 중간값보다 작으면 중간값 왼쪽 부분 배열에서 탐색을 계속하고, 찾고자 하는 값이 중간값보다 크면 중간값 오른쪽 부분 배열에서 탐색을 계속합니다. 이런 과정을 반복해서 값을 찾아냅니다. 이진 탐색의 시간 복잡도는 O(log n)입니다. 이는 배열의 크기가 2배로 증가할 때마다 한 번씩만 비교하면 되기 때문입니다. 이진 탐색은 배열이 정렬되어 있어야만 사용할 수 있습니다. 아래는 C++로 이진 탐색을 구현한 예시입니다. #include #include #include using namespace std; int binarySe..
2023.04.01 -
연결리스트
연결리스트는 데이터와 다음 데이터의 주소를 가지고 있는 노드들이 연결되어 있는 자료구조입니다. 연결리스트는 데이터를 추가하거나 삭제하기 쉽다는 장점이 있습니다. 연결리스트에는 단일 연결리스트, 이중 연결리스트, 환형 연결리스트 등이 있습니다. 연결리스트를 구현하려면 먼저 노드 구조체를 만들어야 합니다. 노드 구조체는 데이터와 다음 노드를 가리키는 포인터를 멤버로 가지고 있습니다. 예제) 노드를 이용하여 정수형 연결 리스트를 구현하는 예제입니다. #include using namespace std; // 정수형 연결 리스트 노드 클래스 class Node { public: int data; Node *next; }; // 노드 추가 함수 void addNode(Node **head, int data) { ..
2023.04.01 -
동적 할당
정적 할당은 컴파일 시점에 결정되는 고정된 메모리 공간을 사용하는 것이고, 동적 할당은 실행 시점에 필요한 만큼 메모리 공간을 할당하는 것입니다. 동적 할당은 포인터를 사용하여 구현합니다. 동적 할당을 위해서는 malloc() 함수나 new 연산자를 사용합니다. 이 둘은 동일한 기능을 수행하지만, malloc()은 C언어에서, new는 C++에서 사용됩니다. 예시) 사용자가 입력한 크기에 따라 동적으로 배열을 할당하고, 배열에 저장된 값을 출력하는 예제입니다. #include using namespace std; int main() { int n; cout > n; // 동적으로 배열 할당 int *arr = new int[n]; // 사용자 입력값으로 배열 초기화 for (int i = 0; i < n..
2023.04.01 -
포인터
포인터란 메모리 주소를 저장하는 변수로, 메모리의 주소를 직접 다룰 수 있게 해줍니다. 즉, 포인터를 이용하면 변수나 배열 등의 메모리 주소를 직접 조작할 수 있게 되어 프로그래밍에서 더욱 다양한 기능을 구현할 수 있습니다. 포인터를 사용하는 방법은 다음과 같습니다. 1. 포인터 변수 선언하기 int *ptr; 위와 같이 데이터 타입 뒤에 *을 붙여 포인터 변수를 선언할 수 있습니다. 이때 변수명은 자유롭게 지을 수 있습니다. 2. 포인터 변수에 메모리 주소 저장하기 int num = 10; int *ptr = # 위와 같이 & 연산자를 이용하여 변수 num의 주소를 ptr에 저장할 수 있습니다. 3. 포인터를 이용하여 변수의 값을 변경하기 *ptr = 20; 위와 같이 * 연산자를 이용하여 pt..
2023.03.30 -
함수 오버로딩
C++에서는 함수 이름이 같더라도 매개변수의 개수, 자료형, 순서 등이 다르면 서로 다른 함수로 인식하는 함수 오버로딩(overloading) 기능을 지원합니다. 함수 오버로딩을 이용하면 비슷한 기능을 수행하는 함수들을 같은 이름으로 정의할 수 있어 코드의 가독성과 유지보수성을 높일 수 있습니다. 함수 오버로딩을 사용할 때는 다음과 같은 규칙을 지켜야 합니다. 함수 이름이 같아야 한다. 매개변수의 개수, 자료형, 순서가 달라야 한다. 반환값의 자료형은 함수 오버로딩에 영향을 주지 않는다. 예를 들어, 다음과 같이 이름이 같은 두 개의 함수를 정의할 수 있습니다. int add(int a, int b) { return a + b; } double add(double a, double b) { return ..
2023.03.30 -
창 크기에 따라 css 조절
창 크기에 따라 font-size를 조정하려면 CSS의 @media 규칙을 사용하여 조건부로 스타일을 적용할 수 있습니다. @media 규칙은 미디어 유형과 유형에 따라 스타일을 적용하는 조건을 정의합니다. 예를 들어, 다음 CSS 코드는 브라우저의 폭이 600px보다 작을 때 font-size를 16px에서 12px로 변경합니다. @media (max-width: 600px) { .inner { font-size: 12px; } } 반대로, 다음 코드는 브라우저의 폭이 600px보다 크거나 같을 때 font-size를 16px에서 24px로 변경합니다. @media (min-width: 600px) { .inner { font-size: 24px; } } 이렇게 @media 규칙을 사용하면 브라우저의 ..
2023.03.30