전체 글

전체 글

    [BOJ] N과M (1)_15649.cpp

    //15649_N과M(1).cpp #include using namespace std; bool check[10]; int a[10]; void solve(int idx, int n, int m) { if (idx == m) { for (int i = 0; i < m; i++) { cout M; solve(0, N, M); return 0; }

    [C++] pair, vector

    1. Pair first, second 두 개의 변수쌍을 저장할 수 있는 struct. 2차원 배열에서 index를 수행하거나 좌표평면의 좌표, Graph에서 정점과 정점 간의 최단거리를 묶어서 저장해야 하는 경우 자주 사용된다. 기본적으로 utility 헤더 파일 (#include)를 포함하며 다른 STL 컨테이너 들에 비해 비교적 간단한 구조이므로 멤버 함수가 적다. ... #include ... int main(){ int t, buf1, buf2; cin >> t; pair p; ... pair p1 = make_pair(1, 2); // 1, 2 ... vector v; for (int i = 0; i > buf1 >> buf2; v.push_back({buf1, b..

    [C++] 동적으로 2차원 배열 할당 및 해제하기

    C++에서 1차원 배열을 동적으로 할당해줄 때는 일반적으로 다음과 같이 선언을 한다. int n; cin >> n; int* cost = new int[n]; 2차원 배열 선언은 단순히 한줄코드로 선언할 수 있는 것이 아닌 for 반복문으로 설정해줘야 한다. 2차원 배열은 위와 같은 구조를 지닌다. 위 그림은 row_n이 4, col_n이 5에 해당하는 배열이다. 먼저, memset 함수 사용을 위해 헤더파일에 string.h 를 포함해준다. 단순히 2차원 배열선언이 목적이라면 아래와 같은 코드를 응용하면 된다. int row_n, col_n; cin >> row_n >> col_n; int** cost = new int*[col_n]; for(int i = 0; i < col_n; ++i) cost[i..

    [C++] 순열 정렬방법 (next_permutation, prev_permutation)

    본 포스팅은 Backjoon Online Judge의 "다음순열(10972), 이전순열(10973), 모든순열(10974), 차이를 최대로(10819)"를 함께 풀때 도움이 되는 글입니다. C++의 STL에선 순열을 정렬하는 함수 next_permutation, prev_permutation이 존재한다. 가령, 1 2 3 4 라는 4개의 숫자로 이루어진 순열을 입력받았다고 가정할때 do{ for(int i=0;i

    [C++] 기본입출력, 줄바꿈

    C++에서의 기본 입출력은 간단하다. //입력 cin >> num; //출력 cout

    Raspberry pi 4 를 사용한 PiCN 구현 (1) - 라즈베리파이 4 기본 구성 (SSH 연결까지)

    본 포스팅은 총 회에 걸쳐 구성된 글입니다. 오... 작년 8월에 출시된 따끈따끈한 라즈베리파이 4를 만져보다니 감회가 새롭다. 먼저 생김새는 위와 같이 생겼다. 방열판은 내가 미리 달아놨다. 바로 이미지 씌우는 작업에 돌입해야지. 설치하기 전에 8GB 이상의 SD 카드와 컴퓨터에 삽입할 수 있는 USB Reader기도 같이 준비한다. 그리고 준비가 완료되면 이미지를 설치하기 위해 아래 홈페이지로 접속한다. https://www.raspberrypi.org/downloads/raspbian/ Download Raspbian for Raspberry Pi Raspbian is the Foundation's official supported operating system. You can install it ..

    VPN (Virtual Private Network) - 가상 사설망

    VPN은 Virtual Private Network (가상 사설망)의 약자다. 이 VPN은 사용자의 실제 위치에 구애받지 않고 안전하게 익명으로 웹을 검색할 수 있는 특징을 갖고 있어 사람들에게 주목받고 있는 기술이다. 우리가 흔히 알고 있는 'VPN 우회' 에서 언급되는 VPN이 바로 가상 사설망이다. VPN을 사용하는 이유 가령, 익명의 사용자 A (121.X.X.X) 가 B Univ 라는 보안된 네트워크 (203.X.X.X) 에 접속해야할 일이 있다고 가정해보자. 여기서 보안된 네트워크에 접속해야할 일이란.. 필자를 예로 들어, B Univ 의 소속 신분인데 논문을 읽고 싶거나 다운로드 받기 위해선 B Univ 네트워크 내에서라는 제한된 환경에서만 무료로 다운로드 받을 수 있다. 따라서 B Univ..

    ICT 란 ?

    ICT는 (Information & Communication Technology)의 약자로 정보통신기술을 의미한다. IT (Information Technology) 의 확장된 용어로 많이 쓰이지만, 통합 커뮤니케이션과 원거리 통신, 컴퓨터, 정보를 접근하고 저장하고 전송하는 조작할 수 있게 하는 전사적 소프트웨어, 미들웨어, 스토리지, 오디오 비주얼 시스템을 강조하는 용어다. ICT는 하나의 케이블 연결이나 링크시스템을 통해서 오디오 수준과 전화망을 컴퓨터 네트워크와 결합하는 의미를 지칭하기도 한다. 즉, IT인 정보기술과 통신기술을 함께 융합한 것이라고 볼 수 있다. ICT 분야에서 밀접하게 관련되어 있는 사업은 BMW가 있다. BMW : Big Data, Mobile, Wearable 을 지칭함

    Deep Learning과 자율 주행 기술

    딥 러닝 (Deep Learning) 컴퓨터가 인간처럼 생각할 수 있는 인공지능 AI를 구현하는 기술이다. 머신 러닝 (Machine Learning)은 좁은 의미의 인공지능을 구현하는 구체적인 접근 방식이며 알고리즘을 이용해 데이터를 분석(analysis)하고 학습(Training)하며, 학습한 내용을 기반으로 판단이나 예측(predict)한다. 구체적인 판단 기준을 소프트웨어에 직접 코딩하는 것이 아니라, 대량의 데이터와 알고리즘을 통해 컴퓨터가 학습하는 것으로 메일함의 스팸메일을 자동으로 걸러주는 것과 같은 역할이다. 하지만 머신 러닝은 인식률이 떨어지고 잦은 오류가 발생했는데 이를 해결하기 위한 기술이 바로 Deep Learning이다. 위 그림을 보면 이해가 쉽다. 딥 러닝은 인공신경망에서 발전..

    Network Delay의 4가지 종류

    Delay는 하나의 데이터 패킷이 한 지점 (출발지점) 에서 다른 지점 (도착 지점) 으로 전송되어 이에 소요되는 시간을 말한다. 따라서 이 같이 지연이 발생하게 되는 원인엔 총 4가지가 있다. 전송 지연 (Transmission Delay) 전파 지연 (Propagation Delay) 노드 처리 지연 (Node Processing Delay) 큐 지연 (Queue Delay) 출처 : https://www.slideshare.net/mahparasaaleem/dcn-lecture-3 1. 전송 지연 (Transmission Delay) 네트워크 장비의 데이터 전송 속도로 결정되며, Server - Client 간 거리와는 무관하다. 따라서 만약 두 라인의 네트워크를 사용할 때 둘 중 한 라인의 속도가..

    변조(Modulation)의 정의와 변조의 방식

    변조 (Modulation) 변조는 전달하고자 하는 신호(정보)를 목적지까지 효율적으로 보내기 위해 신호를 전송에 적합한 형태로 바꾸는 조작 과정을 일컫는다. 변조를 하는 이유로는 여러가지가 있다. 1. 음성신호인 기저대역 신호 (Baseband Signal)는 전달되는 과정에서 주위의 환경에 흡수 또는 반사되어서 먼 거리까지 전달할 수 없다. 하지만 고주파 성분의 전자파는 장거리 전송이 가능하다. 따라서 고주파 성분의 반송파에 정보를 싣는 변조 과정에 의해 먼 거리까지 전송하는 전송효율을 개선할 수 있다. 2. 안테나의 길이를 줄일 수 있다. 안테나의 길이는 전파의 파장에 비례하기 때문에 높은 주파수대로 변조과정을 거치면 안테나의 길이를 줄일 수 있다. ( λ = c / f, λ 는 파장, f는 주파수..

    Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (3)

    본 포스팅은 총 세 단계로 구분되어 포스팅 하였습니다. 참고하세요 Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (1) Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (2) Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (3) 이번 포스팅엔 지난번에 DHT-11을 사용해서 실시간으로 실내 온습도를 측정하는 작업을 마무리했으니 카메라 모듈을 사용하여 실시간으로 스트리밍 서비스를 구축해보겠다. 1. OpenCV 3.1..

    Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (2)

    본 포스팅은 총 세 단계로 구분되어 포스팅 하였습니다. 참고하세요 Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (1) Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (2) Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (3) 지난번 포스팅 때 Raspberry pi 3에 Camera Module을 장착하고 구동 확인 까지 실습했다. 따라서, 이번엔 Arduino 기반의 DHT-11 온습도 센서를 사용해서 실내 온..

    CSMA, CSMA/CD, CSMA/CA 란? (2)

    본 포스팅은 두 개의 글로 구성되어 있습니다. CSMA, CSMA/CD, CSMA/CA 란 ? (1) CSMA, CSMA/CD, CSMA/CA 란 ? (2) CSMA / CD (Carrier Sense Multiple Access with Collision Detection) CSMA / CD 방식은 유선 네트워크의 경우 충돌을 확인할 수 있기 때문에 사용하는 방식이다. 더불어, CSMA / CD 방식은 CSMA 방식에 충돌을 처리하는 절차를 더한 것이다. 먼저, 프레임을 전송 과 동시에 두 개의 다른 포트를 이용하여 충돌이 발생하는지 지속적으로 감시한다. 프레임이 목적지에 도착할 시간 이전에 다른 프레임의 비트가 발견된다면 충돌이 일어난 것으로 판단한다. -- 동작 순서 -- 1. persistent ..

    CSMA, CSMA/CD, CSMA/CA 란? (1)

    본 포스팅은 두 개의 글로 구성되어 있습니다. CSMA, CSMA/CD, CSMA/CA 란 ? (1) CSMA, CSMA/CD, CSMA/CA 란 ? (2) 여러 개의 호스트가 하나의 매체 / 채널을 공유할 때는 두 개 이상의 호스트가 동시에 채널을 사용할 경우 전기신호의 충돌로 인해 통신을 할 수 없게 된다. 따라서 두 개 이상의 호스트가 채널을 공유할 땐 원활한 통신을 위해 상호간에 약속이 필요하다. 현재는 사용하는 빈도 수가 적은 Bus형 Topology 형태의 네트워크나 허브를 통해 구성된 LAN의 경우가 바로 매체를 공유하는 대표적인 예이다. 추가적으로, 무선통신의 경우에도 매체를 공유한다고 볼 수 있다. 공유된 채널에 접근하기 위한 프로토콜 중에서 Random Access 방식에 속하는 프로토..

    RIP, OSPF 프로토콜이란 ?

    일단 RIP과 OSPF 프로토콜을 설명하기 앞서 Routing에 대한 몇 가지 개념을 설명하고자 한다. Routing이란 것은 패킷을 목적지에 전달하기 위해 경로 정보를 어느 노드에 전달하는지 각 노드들이 판단할 수 있도록 하고 그 경로 정보에 따라 패킷을 전달하는 기능을 말한다. 따라서, Routing 프로토콜은 라우터가 패킷을 목적지까지 전달하기 위해 인접한 라우터 사이에서 경로정보를 작성하고 제어하는 프로토콜을 의미한다. 크게 AS (Autonomous System) 내에서의 Routing 프로토콜인 IGP (Internal Gateway Protocol)와 AS 사이에서의 Routing 프로토콜인 EGP (External Gateway Protocol) 두가지로 분류된다. 여기서 말하는 AS는 라..

    DFS(Depth-First Search)와 BFS(Breadth-First Search)

    DFS (깊이 우선 검색) inorder preorder post order DFS는 위 그림과 같이 깊이를 먼저 고려하여 탐색하는 과정이다. STACK을 이용해서 구현이 가능하다. BFS(넓이 우선 검색) Level 단위로 검색 QUEUE를 이용해서 구현

    Cent OS에 Cmake 3.6.1 설치하기

    wget http://www.cmake.org/files/v3.6/cmake-3.6.1.tar.gz tar -zxvf cmake-3.6.1.tar.gz cd cmake-3.6.1 ./bootstrap make make install \cp -f ./bin/cmake ./bin/cpack ./bin/ctest /bin cmake -version

    Dijkstra Algorithm

    다익스트라 알고리즘(Dijkstra Algorithm)은 어떤 변도 음수 가중치를 갖지 않는 유향 그래프에서 주어진 출발점과 도착점 사이의 최단 경로 문제를 푸는 알고리즘이다. 기본 로직은 출발점을 기준으로 연결되어 있는 정점들을 추가해가며, 최단 거리를 갱신하는 것이다. 위와 같은 그래프가 있다고 가정하며 출발점은 1번 정점이다. 이 중에서 경로가 가장 짧은 정점을 고르면 2, 3번 점이 된다. 2번 점부터 확인해보면, 2번 점의 최단 거리를 가지고 있는 현재 최단거리 (INF)와 1번 점의 최단거리(0) + 1~2번의 가중치(4) 값 중 가장작은 값으로 갱신한다. 코드로 만들면 다음과 같다. --> dist[2] = min(dist[2],dist[1]+adj[1][2]) 따라서 min(INF, 4)이..

    추가 HDD 마운트하는 방법

    음... 필자는 최근에 블록체인 네트워크에 관해 공부를 하고 있는데 Geth라는 Ethereum client가 있다. 이 클라이언트는 Go 언어로 작성된 Ethereum client 로서 ethereum network에 있는 블록들을 가져오는 역할을 수행하기도 한다. 참고로 그 블록이 현재 2019년 08월 기준 70GB 가 초과하고 있는 실정이라 C 드라이브에 저장하기엔 다소 한계가 있었다. 따라서 오늘은 기존 사용하고 있던 서버 컴퓨터에 추가로 HDD (1TB) 를 장착하고 Ubuntu 환경에서 마운트 해주는 방법에 대해 포스팅을 해볼까 한다. 1. 하드디스크 확인 먼저 하드디스크를 서버에 부착하고 시동을 거는 과정은 생략한다. sudo fdisk -l fdisk 명령어로 현재 시스템에 연결되어 있는..