개발일지
article thumbnail
C++ 포인터
프로그래밍/C++ 2024. 1. 20. 00:33

int n = 100; 우리는 어떤 수나 문자를 저장하기 위해서 변수를 사용한다. 그러나 이 변수는 우리의 컴퓨터의 메모리에 어느 위치에 대한 이름인지를 나타낸 것이다. 친구랑 서울시청에서 모이기로 하였다. 서울 시청의 주소는 서울특별시 중구 세종대로 110이다. 우리는 후자와 전자로 말하여도 어디있는지 알 수 있지만 컴퓨터는 주소를 알아야 그 장소를 찾을 수 있다. 그래서 이 n이라는 변수는 100이 저장되어있는 어느 메모리의 이름인 것이다. 포인터(Pointer) int* n; int a = 10; n = &a; cout

[C++]그리디 알고리즘(Greedy Algorithm)
프로그래밍/C++ 2023. 12. 18. 15:13

개념 그리디 알고리즘은 말 그대로그리디 알고리즘은 각 단계에서 지금 당장 가장 좋아 보이는 선택을 하는 알고리즘이다. 매 순간 최선의 선택을 통해 전체적인 최적해를 찾는 방법으로 사용됩니다. 이렇게 지금 당장 좋아보이는 선택만 하다 보니 항상 최적의 선택을 할순 없다. 예제(동전 0) 그리디 알고리즘은 항상 최적해를 찾는 것을 보장하지 않기 때문에 어떤 경우에는 최적해가 아닌 해를 반환할 수 있다. 이를 설명하기 위해 거스름돈 문제를 약간 변형한 예제를 살펴보자. https://www.acmicpc.net/problem/11047 문제 가게에서 물건을 샀을 때, 손님이 지불한 금액보다 적은 동전의 개수로 거스름돈을 주려고 한다. 어떻게 하면 손님에게 줄 동전의 개수를 최소화할 수 있을까? 입력 첫째 줄에..

[프로그래머스/C++] 네트워크
프로그래밍/C++ 2023. 12. 4. 17:29

https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가..

[프로그래머스/C++] 신고 결과 받기
프로그래밍/C++ 2023. 11. 22. 23:22

https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. • 각 유저는 한번에 한 한명의 유저를 신고할 수 있음. • 신고 횟수제한은 없음. • 동일한 유저에 대한 신고 횟수는 1회로 처리. • k번 이상 신고된 유저는 게시판 이용 정지, 해당 유저를 신고한 유저들에게 정지 메일 발송. • 유저가 ..

article thumbnail
[알고리즘/C++] 이진 탐색 트리 (Binary Search Tree, BST)
프로그래밍/C++ 2023. 11. 8. 14:49

이진 탐색 트리 (Binary Search Tree, BST)란? 이진 탐색 트리(BST)는 중요한 데이터 구조 중 하나로, 데이터를 효과적으로 저장하고 검색하는 데 사용된다. 이진 구조 BST는 모든 노드가 최대 두 개의 자식 노드를 가지는 이진 트리다. 각 노드는 최대 두 개의 하위 노드를 가질 수 있으며, 하위 노드는 왼쪽 자식 노드와 오른쪽 자식 노드로 구분된다. 정렬된 순서 BST는 중요한 특징 중 하나는 모든 노드의 왼쪽 하위 트리에는 현재 노드보다 작은 값의 노드만 포함되고, 모든 오른쪽 하위 트리에는 현재 노드보다 큰 값의 노드만 포함된다는 것입니다. 이러한 특성 덕분에 BST의 모든 노드는 정렬된 순서로 구성되어 있다. 추가 및 삭제 BST에 데이터를 추가하거나 삭제하는 작업도 효율적으로..

article thumbnail
[Algorithm] DFS와 BFS
프로그래밍/C++ 2023. 10. 11. 14:07

그래프 탐색 그래프 탐색은 그래프(Graph)라는 자료 구조에서 특정한 목적을 가지고 노드(Node)나 정점(Vertex)을 탐색하거나 찾는 작업을 의미합니다. 그래프는 여러 개의 노드와 이를 연결하는 간선(Edge)으로 구성되며, 다양한 형태의 데이터나 객체 간의 관계를 모델링할 때 사용된다. 그중 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS)가 대표적이다. 깊이 우선 탐색(DFS) 깊이 우선 탐색(DFS)은 그래프의 모든 노드를 방문하고자 할 때 사용되는 알고리즘 중 하나다. DFS는 스택(stack) 자료구조를 사용하여 구현하며, 더 이상 진행할 수 없을 때까지 한 경로를 탐색한 후, 다른 경로로 이동하여 탐색을 계속한다. 동작원리 시작 노드를 스택에 넣고 방문 표시를 합니다. 스택이 빌 때까..

[알고리즘/C++]버블정렬Bubble Sort
프로그래밍/C++ 2023. 6. 7. 15:10

버블정렬(Bubble Sort) 서로 이웃한 두 원소를 비교하여 큰 값을 비교하여 조건에 맞지 않는다면 자리를 교환하는 정렬이다. #동작 방식 버블 정렬은 반복적으로 배열을 탐색하면서 이웃한 요소를 비교하여 서로 교환한다. 탐색 과정에서 현재 요소가 다음 요소보다 크다면, 두 요소의 위치를 교환다. 이러한 교환 과정을 반복하여 배열의 가장 큰 요소가 맨 뒤로 이동하게 됩니다. 이 과정을 배열의 크기만큼 반복하면 전체 배열이 정렬된다. #코드 코드로 구현하면 이렇다. void bubbleSort(const int size, int arr[]) { for (int i = 0; i < size; i++) //(1) 배열에서 제외할 원소의 갯수 { for (int j = 1; j < 8 - i; j++) //(..

article thumbnail
[백준/C++] 10828번 큐
프로그래밍/C++ 2023. 5. 31. 00:40

10828번 큐 https://www.acmicpc.net/problem/10845 #큐 큐는 선입선출(FIFO, First-In-First-Out) 원칙에 따라 동작하는 추상적인 자료구조입니다. 큐는 일상 생활에서 줄을 서서 기다리는 것과 비슷한 개념으로 이해할 수 있습니다.큐에는 두 가지 주요 연산이 있습니다: "enqueue"와 "dequeue"입니다. Enqueue: 큐의 뒤쪽에 요소를 추가합니다. 이는 줄의 맨 뒤에 사람이 추가되는 것과 비슷합니다. Dequeue: 큐의 앞쪽에서 요소를 제거합니다. 줄의 맨 앞에 있는 사람이 서비스를 받고 나가는 것과 비슷합니다. 이렇게 큐에서는 항상 첫 번째로 들어온 요소가 먼저 처리되고, 마지막으로 들어온 요소가 가장 나중에 처리됩니다. #문제 #풀이 #in..