반응형

2024/11 77

[G5] 백준 16509번 장군 C++ BFS, 시뮬레이션

리뷰 https://www.acmicpc.net/problem/16509상을 움직이는 문제지만, 이동 중 다른 기물이 있다면 이동할 수 없는 조건이 추가된 문제  전역 변수Pos : 말의 위치와 현재 까지 이동한 시간을 기록하기 위한 구조체King : 왕의 위치를 저장하기 위한 Pos타입 변수Elep : 상의 위치를 저장하기 위한 Pos타입 변수r, c : 맵의 행과 열의 제한을 두기 위한 정수형 상수 변수dx, dy : 상의 이동을 시뮬레이션 하기 위한 방향 배열, 각 케이스 마다 하드 코딩 해주었다.map : 왕의 위치를 1로 표기하여 좀 더 편하게 시뮬레이션 하기 위한 정수형 2차 배열v : 방문 처리를 기록하기 위한 정수형 2차 배열 함수1. bfsint bfs() 너비 우선 탐색을 통해 상이 왕..

[P3] 백준 13544번 수열과 쿼리 3 C++ 세그먼트 트리, 머지소트 트리

리뷰 https://www.acmicpc.net/problem/13544간만에 푼 머지소트 트리 문제, 예제 답이 제대로 나오지 않아 한참 찾았는데 query 함수 내에서 범위 처리를 잘못했었다.세그먼트 트리 문제는 항상 조그만 실수에도 문제 전체가 달라져 버리니 주의 요망  전역 변수N : 수열의 최대 길이를 저장하기 위한 정수형 상수 변수n : 문제에 주어지는 수열의 크기m : 문제에 주어지는 쿼리의 개수i : 탐색할 범위의 왼쪽j : 탐색할 범위의 오른쪽k : 탐색할 값last : 이전 쿼리의 결과nodes : 수열 정보를 저장하기 위한 정수형 배열tree : 세그먼트 트리 정보를 저장하기 위한 정수형 벡터 배열 함수1. buildvoid build(int node, int s, int e) 머지 ..

객체 지향 프로그래밍의 4가지 특징

개요상속: 기존 클래스의 속성과 메서드를 물려받아 재사용하고 확장할 수 있는 개념.다형성: 동일한 인터페이스(메서드)가 여러 형태로 동작할 수 있게 하는 개념.캡슐화: 객체의 상태와 행위를 하나의 단위로 묶고, 내부 구현을 숨기고 외부와의 인터페이스만 제공하는 개념.추상화: 시스템의 복잡한 세부사항을 숨기고 중요한 기능만을 드러내는 개념. 상속기존 클래스에서 정의된 속성과 메서드를 새로운 클래스로 물려받아 재사용할 수 있게 해주는 OOP의 기본 개념자식 클래스는 부모 클래스의 멤버를 상속받고, 이를 확장하거나 변경할 수 있다.이를 통해 코드 재사용성을 높이고, 유지보수를 용이하게 만든다. 상속을 사용하면 코드 중복을 피할 수 있으며, 일반적으로 "is-a" 관계를 나타낸다.예를 들어, "자동차"는 "탈 ..

[S4] 백준 9372번 상근이의 여행 C++ BFS

리뷰 https://www.acmicpc.net/problem/9372문제 분류로 풀어보기에서 MST에 있길래 시도했으나 일반적인 BFS나 DFS로도 해결이 가능한 문제  전역 변수t : 테스트 케이스의 개수n : 국가의 개수m : 주어지는 인접 리스트의 개수v : 방문 처리용 정수형 배열 함수1. bfsint bfs(int sn, const vector>& lst) 너비 우선 탐색을 통해 방문한 간선의 최소 개수를 구하기 위한 문제매개변수로 시작 국가의 번호 sn과 인접 리스트 lst를 전달 받는다.정수형 타입 큐 q를 초기화 하고 sn을 큐에 삽입해 준다.sn을 방문처리 해주고, 방문한 국가 cnt를 1로, 탑승한 비행기의 수 result를 0으로 초기화 한다.q가 빌때 까지 반복문을 수행하고, 매 ..

네트워크 병렬 서버 로드 밸런싱 - DNS, Anycast

개요네트워크 병렬 서버 로드 밸런싱 - 프록시 서버 네트워크 병렬 서버 로드 밸런싱 - 프록시 서버개요다수의 클라이언트가 서버로 요청을 보내는 경우, 한개의 서버로 모든 클라이언트의 로직을 처리한다면 해당 서버에는 과부하가 걸릴 것이고 클라이언트는 응답을 늦게 받거나 서버가 뻗zzzz955.tistory.com 프록시 서버를 사용하지 않고도 병렬 서버에서 부하 분산(로드 밸런싱)을 구현하는 방법이 있다.이러한 방법은 클라이언트가 직접 여러 서버와 통신하도록 설계하여 프록시 서버의 부하를 줄이고, 중간 단계를 없애는 데 초점을 둔다.   DNS 기반 부하 분산DNS 로드 밸런싱은 하나의 도메인 이름에 여러 개의 IP 주소를 매핑하여 클라이언트가 요청할 때마다 서로 다른 서버로 트래픽을 분배하는 기법이다.D..

네트워크 통신 2024.11.26

네트워크 병렬 서버 로드 밸런싱 - 프록시 서버

개요다수의 클라이언트가 서버로 요청을 보내는 경우, 한개의 서버로 모든 클라이언트의 로직을 처리한다면 해당 서버에는 과부하가 걸릴 것이고 클라이언트는 응답을 늦게 받거나 서버가 뻗어버릴 것이다.그렇다면 서버를 병렬로 두어 여러가지 서버를 둔다고 가정을 해보자클라이언트 입장에서는 각 서버의 IP주소와 포트번호를 알아야 연결 요청을 진행할 수 있다.그럼 클라이언트 입장에서 어떤 IP주소와 포트번호로 연결 요청을 해야할까?또한 연결 요청한 서버가 과부하 상태라면 어떻게 할까?이를 관리 해주기 위한 로드밸런싱이 필요하다.  프록시 서버네트워크 프록시 네트워크 프록시개요프록시(Proxy)는 네트워크 통신에서 중개 서버 역할을 하는 시스템이다.클라이언트와 서버 사이에서 데이터를 중계하거나 대리로 처리하는 기능을 수..

네트워크 통신 2024.11.26

네트워크 IOCP

개요IOCP(Input/Output Completion Port)는 윈도우 OS에서 고성능 비동기 입출력을 지원하기 위해 설계된 메커니즘이다.IOCP는 주로 대규모 네트워크 서버와 같이 높은 동시성을 요구하는 애플리케이션에서 사용된다. 비동기 I/O를 기반으로 동작하며, 연산이 완료될 때까지 블로킹되지 않아 CPU 리소스를 효율적으로 사용할 수 있다.입출력 작업이 완료되면 해당 작업의 완료 상태를 IOCP에 전달해 큐에 저장하고, 워커 스레드가 작업을 가져가 처리한다.이때 IOCP는 스레드 풀을 사용하여 워커 스레드를 관리해 필요한 만큼의 스레드를 유지하며, CPU 코어 수를 고려하여 최적의 성능을 제공한다.IOCP는 수천 개의 연결을 동시에 처리할 수 있어, 고성능 서버 구현에 적합하다.  작동 흐름C..

네트워크 통신 2024.11.26

데이터베이스 Clustered Index, Non-Clustered Index

개요Clustered Index와 Non-Clustered Index는 데이터베이스에서 데이터를 빠르게 검색하기 위한 주요 인덱스 방식이다.각 방식은 데이터가 저장되는 방식과 인덱스의 구성 방식에서 중요한 차이점이 있다.  Clustered Index데이터가 실제로 저장되는 순서를 기반으로 하는 인덱스이다.클러스터드 인덱스는 테이블의 데이터 자체가 인덱스의 순서대로 저장된다.하나의 테이블에 대해 하나의 클러스터드 인덱스만 존재할 수 있다. 테이블의 데이터가 클러스터드 인덱스의 순서대로 정렬되어 저장된다.예를 들어, 기본 키(PK)가 클러스터드 인덱스로 설정되면, 테이블의 데이터가 기본 키 순서대로 저장된다.데이터를 실제로 저장하는 방식이 인덱스의 순서에 따라 결정되기 때문에 테이블당 하나만 존재할 수 있..

[S2] 백준 14713번 앵무새 C++ 해시맵, 문자열

리뷰 https://www.acmicpc.net/problem/14713문제가 잘 이해되지 않았는데 예상되는 케이스를 반례로 넣었더니 AC를 받았다.알고리즘 분류에 큐가 적혀있는데 큐 없이도 문제가 해결 가능했다, 어쩌면 더 최적화 코드가 있을 지도?  전역 변수n : 앵무새의 개수idx : 각 앵무새가 읽은 단어의 인덱스를 저장하기 위한 정수형 배열 함수없음  문제풀이key가 문자열, value가 pair타입인 해시맵 dic을 초기화 해준다.n값을 입력 받고, 이후 문자열을 getline으로 받을 것이기 때문에 cin.get()를 수행해 준다.n번의 반복문을 실행하고, 정수형 변수 index를 0으로 초기화 해준다.빈 문자열 변수 s를 초기화 하고 getline을 통해 cin값을 s에 저장해 준다.st..

POSIX Docker 설치와 Ubuntu 환경 세팅

개요POSIX환경에서의 소켓 통신을 구현하기 앞서 Linux환경의 세팅을 Docker를 통해 진행해 준다. https://www.docker.com/products/docker-desktop/ Docker Desktop: The #1 Containerization Tool for Developers | DockerDocker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.www.docker.com 위 사이트를 방문하여 자신의 OS 환경에 맞는 Docker Desktop을 다운로드 해준다.나는 인텔 칩을 사..

728x90
반응형