개발일지
[프로그래머스/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..

article thumbnail
[C++] 함수 인수 전달 방식의 차이점 이해하기
프로그래밍/C++ 2023. 4. 20. 11:01

함수 인수 전달 방식 C++에서 함수 인수 전달 방식은 크게 값에 의한 전달, 참조에 의한 전달, 포인터에 의한 전달의 세 가지 방법이 있습니다. 이 세 가지 방법은 각각의 장단점이 있으므로, 어떤 방식을 선택할지는 상황에 따라 다릅니다. 이번 글에서는 이 세 가지 방식에 대해 자세히 알아보도록 하겠습니다. #값에 의한 전달(call by value) 값에 의한 전달은 함수 인수로 값 자체를 전달하는 방식입니다. 이 방식은 함수 내부에서 인수 값을 변경하더라도 함수 외부에서는 변경되지 않습니다. 따라서 함수 인수가 참조할 수 있는 값의 범위가 함수 내부로 제한되기 때문에, 함수 외부에서는 함수 인수를 변경할 수 없게 됩니다. void increment(int x) { x++; } int main() { ..

article thumbnail
[C++]윈도우 API를 활용한 절대 음감 게임
프로그래밍/C++ 2023. 4. 6. 00:09

절대 음감 게임 #문제 8음계를 차래대로 들려준 후 랜덤으로 한 음을 들려주고 그 음을 맞추는 게임이다. #풀이 #include #include #include using namespace std; void SoundPlay(int n, bool show) { switch (n) { case 1: show ? cout