반응형

분류 전체보기 658

[G3] 백준 1701번 Cubeditor C++ KMP, 문자열, 브루트포스 알고리즘

리뷰 브루트포스 알고리즘을 통해 문자열의 길이를 줄이며 각 문자열의 LPS를 구하는 문제https://www.acmicpc.net/problem/1701 전역 변수str : 탐색을 진행할 문자열 변수n, ans : 초기 문자열의 길이 n, 가장 긴 길이를 저장할 변수 ans 함수1. getLPSvoid getLPS(string str) 문자열의 LPS를 구하는 함수매개 변수는 초기 문자열에서 왼쪽의 문자열이 한개씩 날아간 문자열들이 주어진다.해당 문자열에서의 LPS를 구하고 LPS중 가장 큰 값이 ans에 저장되게 된다. 문제풀이초기 문자열 str을 입력 받고 n에 str의 길이를 저장한다.n번의 for문을 개행하고 str의 왼쪽에서부터 한글자씩 제거하며 getLPS함수의 매개변수로 전달해 준다.n번의 ..

[P5] 백준 1786번 찾기 C++ KMP, 문자열, LPS

리뷰 KMP의 기초가 되는 문제, O(M+N)의 시간 복잡도로 해당 문제를 푸는게 놀라울 따름이다.https://www.acmicpc.net/problem/1786 전역 변수str1, str2 : 원본 문자열 str1, 원본 문자열에서 패턴을 찾을 문자열 str2n, m, cnt : str1의 길이 n, str2의 길이 m, str1에서 str2를 찾은 개수 cntlps, ans : 부분 문자열의 lps를 구할 정수형 벡터 lps, 찾은 인덱스를 저장할 정수형 벡터 ans 함수1. getLPSvoid getLPS(const string& str2) 패턴 문자열 str2에서 LPS를 구하기 위한 함수lps벡터를 m크기로 초기화 해준다. lps[0]은 0으로 초기화 해야하므로 일단 모두 0으로 초기화 해주었..

[G3] 백준 16934번 게임 닉네임 C++ 트라이, 문자열, 해시맵

리뷰 트라이를 사용해 유저가 가입한 순서대로 닉네임이 주어졌을 때, 각 유저의 별칭을 구하는 문제https://www.acmicpc.net/problem/16934 전역 변수Trie : 트라이를 구현할 구조체 동일한 닉네임이 들어올 수 있으므로 cnt라는 변수를 업데이트 해줘야 한다.root : 트라이의 루트를 나타낼 Trie타입 구조체n : 입력 받을 게임 닉네임의 개수 함수1. insertvoid insert(Trie* node, const string& str) 트라이에 게임 닉네임을 입력하고, 별칭을 출력해 주는 함수함수 호출 시 flag를 통해 별칭을 출력했는지 여부를 체크해 준다. 기본값은 1이다.입력 받은 문자열을 순회하며 다음 노드가 있는지 체크해 준다.만약 다음 노드가 존재하지 않을 시 ..

리눅스 네트워크 이더넷 Linux network ethernet

개요이더넷은 옛날 방식이고, 인터넷은 최근 방식일까?정답은 X이다, 이더넷과 인터넷은 다른 개념으로 서로 연결될 수도, 아닐 수도 있다.보통 규모가 작은 LAN에서는 이더넷 통신을 한다.이더넷은 MAC 주소로 통신을 하며, 허브가 IP를 부여하는 방식이다. 인터넷은 TCP / IP 프로토콜을 사용하여 IP주소 기반 통신을 하지만이더넷은 CSMA / CD 프로토콜을 사용하여 MAC주소 기반 통신을 한다. 이와 같은 이유로 이더넷 카드, 이더넷 케이블과 같은 이더넷을 위한 장비가 따로 존재한다.사실상 LAN 규모의 대표적인 통신이 표준이므로, 이더넷 카드 및 이더넷 케이블을 랜카드, 랜케이블이라고 부른다.  CSMA / CDLAN에서 통신을 할때는 연결되어 있는 모든 노드에게 데이터를 보낸다.5개의 장치 A..

리눅스 네트워크 기초 Linux network

개요네트워크 프로그래밍은 TCP/IP 소켓 통신을 이용한 개발이다.모든 것은 TCP/IP 소켓 통신 하나로 시작해서 끝이 난다. 네트워크 분야는 H/W와의 밀접한 관련이 있다.그래서 S/W 개발자일지라도, 네트워크 장비 관련 지식이 필요하다. TCP/IP 소켓 통신을 이용한 멀티 쓰레드 기반 채팅 Application 을 개발하는 실습을 진행한다.  네트워크노드와 링크로 구성한 데이터 교환망이다.노드는 컴퓨터 장치들을 의미하며, 링크는 연결을 의미한다. 컴퓨터나 다른 장치들을 연결하여 데이터를 주고 받을 수 있는 구조를 의미한다. 알고리즘에서 그래프 문제를 풀땐 노드끼리 연결할땐 간선이 필요한 것을 알 수 있다.노드는 랜카드, 간선은 케이블이라고 생각하면 케이블은 양방향 간선 이기 때문에 2대의 랜카드와..

[G3] 백준 7432번 디스크 트리 C++ 트라이, 문자열, DFS

리뷰 개미굴과 유사한 부분이 많은 문제인듯 하다. 하지만 개미굴과 달리 공백이 아닌 역슬래시로 문자열을 구분https://www.acmicpc.net/problem/7432 전역 변수n : 디렉토리 전체 경로의 개수Trie : 맵을 사용하여 디렉토리 정보를 트라이로 사용할 구조체 함수1. insertvoid insert(Trie* node, const vector& strs) 트라이에 디렉토리 문자열을 추가할 함수입력할 디렉토리 이름을 벡터형식으로 입력 받는다.루트노드에서 부터 시작하여 각 문자열을 하위 요소에 넣어준다.만약 처음으로 정의된 디렉토리인 경우 새롭게 할당해주고 이동하는 작업을 해준다. 2. dfsvoid dfs(Trie* node, int level) 깊이 우선 탐색을 통해 디렉토리 정보를..

네트워크 기기

개요네트워크 기기는 컴퓨터 네트워크에서 데이터의 전송, 수신, 라우팅, 관리를 담당하는 장치이다.주로 데이터를 전달하고, 트래픽을 제어하며, 네트워크 보안을 유지하는 등의 역할을 수행한다.  라우터컴퓨터 네트워크에서 서로 다른 네트워크 간의 데이터 전송을 관리하는 네트워크 장치패킷이라 불리는 데이터 조각을 송신지에서 목적지로 전달하는 역할한다.이 과정에서 최적의 경로를 찾는 것이 주요 기능이며, 가정용에서 대규모 기업 및 인터넷 서비스 제공업체(ISP) 네트워크까지 다양한 환경에서 사용된다. 라우터의 주요 기능은 다음과 같다.목적지 주소(IP 주소)를 기준으로 가장 효율적인 경로를 선택하여 패킷을 송신지에서 수신지로 전달한다.네트워크를 여러 부분으로 분할하여 트래픽을 분산하고, 병목 현상을 줄이며, 성능..

[G4] 백준 5052번 전화번호 목록 C++ 트라이, 문자열

리뷰 접두사가 동일한 전화번호가 있는지 찾고, 있으면 YES를 없으면 NO를 출력하는 문제https://www.acmicpc.net/problem/5052 전역 변수tc, n : 테스트케이스의 개수 tc, 각 테케마다 입력되는 전화번호의 개수 nlst : 각 테케마다 입력된 문자열을 저장할 문자열 타입 배열, 최대 1만으로 크기를 설정한다.Trie : 트라이를 구현할 구조체, 숫자열 문자를 받아오므로 child의 크기는 10으로 설정한다. 함수1. insertbool insert(Trie* node, const string& str) 트라이에 새로운 전화번호를 넣는 함수전화번호를 넣는 도중 접두어가 있는지 체크까지 해주어야 한다.만약 접두어가 있다면 탐색을 그만하고 NO를 출력해 주어도 된다. 문제풀이t..

[P3] 백준 19585번 전설 C++ 트라이, 해시맵, 문자열

리뷰 트라이와 해시맵을 사용하여 푸는 문제, 2트라이, 1트라이 1해시맵, 2해시맵 모두 풀리는 것 같다.https://www.acmicpc.net/problem/19585 전역 변수c, n, q : 색상 정보의 개수 c, 팀 정보의 개수 n, 쿼리의 개수 qteams : 팀 정보를 저장할 해시맵 key : 문자열, value : 정수형으로 초기화 한다.Trie : 트라이를 통해 색상 정보를 저장할 구조체 소문자에 대한 정보를 트리형태로 저장한다. 함수1. insertvoid insert(Trie* node, const string& str) 트라이를 통해 트리 구조에 문자를 삽입하는 함수매개변수로 Trie 타입의 현재 노드의 포인터와 입력할 문자열인 str를 받아준다.문자열을 탐색하면서 관련 노드가 존..

네트워크 DNS

개요DNS(Domain Name System)는 인터넷에서 도메인 이름을 IP 주소로 변환해 주는 시스템이다.쉽게 말해 사용자가 웹사이트에 접속하려고 할 때, 도메인 이름(예: www.example.com)을 입력하면 이 이름을 해당하는 IP 주소(예: 192.168.1.1)로 변환해 주는 역할을한다.를 통해 사용자는 복잡한 숫자 형태의 IP 주소를 기억할 필요 없이 알아보기 쉬운 도메인 이름만으로 웹사이트에 접속할 수있다. DNS는 인터넷이 원활하게 작동하도록 해 주는 핵심 시스템이다. 웹사이트를 방문할 때마다 수십 번씩 DNS 요청이 일어나며, 그 덕분에 우리는 복잡한 IP 주소 대신 익숙한 도메인 이름만 기억하면 되는 편리함을 누리고 있다.  DNS의 역할도메인 이름을 쉽게 기억할 수 있도록 사용하..

728x90
반응형