[코딩테스트] 백준 1068번 트리
·
CS/Algorithm
문제 : https://www.acmicpc.net/problem/1068문제 노드를 지우면, 자식노드까지 전부 삭제하는 문제이다입력 & 출력5-1 0 0 1 11즉, 이 트리는 루트노드는 아무런 부모를 가지고 있지 않고, 1번 / 2번 노드는 0번 노드 (루트 노드)를 부모 노드로 가지고 있으며3번 /4번 노드는 1번 노드를 부모 노드로 가지고 있다.따라서 1번 노드를 지우게 되면 루트노드와 2번 노드만 남으므로최종 남는 리프노드의 개수는 1개이다.1 이 출력된다. 풀이#include using namespace std;int tree[51];int N;void deleteA(int x){ tree[x] = -2; for(int i = 0; i delateA라는 함수를 통해 어떠한 노드를 삭..
Network | 네트워크 (용어 및 동작)
·
CS/Computer Network
용어네트워크데이터 전송과 데이터 처리를 유기적으로 결합하여 어떤 목적이나 기능을 수행하는 시스템데이터 전송 : 컴퓨터에 의해 처리된 정보를 전송하는 것데이터 처리 : 컴퓨터에서 정보를 처리하는 것LAN(Local Area Network)LAN은 일반적으로 300m 이하의 통신 회선으로 연결된 PC 메인 프레임, 워크 스테이션들의 집합종단 시스템을 가장자리 라우터에 연결하는데 사용됨프로토콜 (Protocol) 서로 다른 시스템에 있는 두 개의 엔티티가 통신하려면 서로 동일 약속이 필요함. 이러한 통신 규약들을 의미함인터넷 정보의 송 수신을 제어한다.ex) TCP / IP패킷 (packet)송신 중단 시스템에서 수신 종단 시스템(목적지)로 보내지는 것송신 종단 시스템이 보내고자 하는 데이터를 세그먼트로 나누..
[Assembly] 산술 연산
·
CS/Computer Architecture
incincoperand1inc eaxeax에 +1을 해주는 코드(eax++)operand1 +1operand1 : 레지스터 or 메모리CF를 설정하지 않음 Exampleinc al : al에 1을 더한 후 다시 al에 저장함 * al에 0xff가 저장되어있다고 가정inc al : al에 1을 더한 후, 다시 al에 저장하면 al에는 0이 저장되고, 자리 올림이 발생했지만 CF가 설정되지 않음> CF와 OF의 차이를 이해하면 OF도 설정되지 않는다는 것을 알 수 있다 (부호 반전이 없기 때문에)  decdecoperand1deceaxeax에 -1을 해주는 코드 (eax--)operand1 -1operand1 : 레지스터 or 메모리CF를 설정하지 않음 Exampledec al : al에 1을 뺀 후 다시..
Internet | 인터넷
·
CS/Computer Network
The internet allows distributed applications running on it's end system to exchange data어플리케이션이 종단 시스템에서 데이터를 교환하게 해주는 것 인터넷은 전 세계적으로 수많은 컴퓨팅 장치들을 연결해주는 네트워크이다. end system (종단 시스템) / host (호스트)클라이언트 / 서버컴퓨터 네트워크에 연결된 장치 Service인터넷은 두 가지 서비스를 제공한다A connection-oriented reliable service : 연결 지향형 서비스A connectionless unreliable service : 비연결형 서비스 Connection-oriented reliable service | 연결 지향형 서비스The c..
[Assembly] 데이터 이동
·
CS/Computer Architecture
movmovoperand 1operand 2moveax1eax 레지스터에 값 1을 넣는 코드operand2를 operand1로 이동한다operand1 : 레지스터 or 메모리 (상수는 불가능함)operand2 : 상수 or 레지스터 or 메모리두 피연산자의 크기가 일치해야함두 피연산자에 동시에 메모리가 올 수 없음메모리는 TYPE PTR [레지스터 or 상수]로 표기하는데, TYPE에는 BYTE(1), WORD(2), DWORD(4) QWORD(8)이 올 수 있다. *mov는 "값"과 연관이 있다고 생각하면 쉬워짐 Example mov rax, 0x1 : rax 레지스터에 0x1을 대입한다mov rax, rbx : rbx 레지스터의 값을 레지스터에 대입한다mov QWORD PTR [0x400000], r..
Network Layer | 네트워크 계층구조
·
CS/Computer Network
계층구조크고 복잡한 시스템의 잘 정의된 특정 부분을 논의할 수 있도록 해준다 (단순화 해줌)한 계층의 구현이 변화하더라도, 시스템의 나머지 부분은 변화하지 않는다.네트워크 계층 구조를 나타내는 방법에는 크게 두 가지가 있는데OSI 7계층TCP/IP 5계층이 있다. 구조적 차이는 OSI 7계층의 5,6,7 계층이 합쳐져 TCP/IP 5계층의 5계층이 된 것이다.  계층 구조의 각 계층은 그 계층에서 어떤 동작을 취하고그 계층 바로 아래 계층 서비스를 사용함으로써 서비스를 제공한다. Service Model한 계층은 상위 계층에게 제공하는 서비스(Service)에 관심을 가짐각 계층은 그 계층에서 어떤 행위를 하며, 아래 계층의 Service를 사용함각 계층은 독립적이지만, 서로 영향을 주고 받음 TCP/I..
Wireshark 캡처하기 (BIOCPROMISC: Operation not supported on socket)
·
CS/Computer Network
오류Wireshark를 이용하여 Ethernet 등을 캡처하고자 하면 이런 경고문이 뜬다BIOCPROMISC: Operation not supported on socket이다이 뜻은 프로미스큐어스 모드'(Promiscuous Mode)로 전환하려 할 때 발생하는 문제이다. 프로미스큐어스 모드란, 내 MAC주소가 아닌 곳으로 들어오는 패킷까지 전부 패킷 필터링을 하지 않도록 해주는 모드이다설정해두면 위험하니 꺼두도록 하자 ^_^ 해결Wireshark의 상단에서 Capture > Options를 선택하면이러한 창이 뜬다.  여기에서 Enable promiscuous mod on all interface라고 체크 되어있는 부분을 해제해준 후, Start하면 정상적으로 패킷캡처가 이루어질 수 있다.
Quick Sort
·
CS/Data Structure
Quick Sort Definition int qsort(int a[], int n){ int d; int p = a[0]; //Rearrange a[] so that // a[d] == p // a[0], a[1], ..., a[d-1] p qsort(a,d); qsort(a+d+1, n-d-1); return ;}a[0]에 있던 값이 p이고, p가 d에 가도록 rearrange한다.* rearrange란 ? 값이 없어지지 않고 그대로 유지되지만 위치만 바뀐다a[0]부터, a[d-1]까지 있는 얘들은 모두 p보다 작음a[d+1]부터, a[n-1]까지는 모두 p보다 큼> O(n) 시간 안에 해결함 Q) 어떻게 O(n)시간에 해결하는가?A)1. p보다 큰건 +라..
Static Link vs Dynamic Link
·
CS/Computer Architecture
Compile | 컴파일컴파일은 인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU가 이해할 수 있는 언어로 변환하는 작업즉, 바이너리 형태로 변환하는 작업이다. (기계어)Pre-Processing : 전처리기 (Pre-processor)을 통해 소스 파일을 수정된 소스 파일 (전처리된 소스 파일)로 변환Compilation : 컴파일러 (Compiler)을 통해 수정된 소스 파일을 어셈블리 파일로 변환Assembly : 어셈블러 (Assembler)을 통해 어셈블리어 파일을 오브젝트 파일로 변환 - 오브젝트 파일부터 바이너리 형태Linking : 링커 (Linker)을 통해 오브젝트 파일들과 라이브러리, 헤더 파일들을 하나로 묶어 실행 파일로 변환이때 Linking 과정에서 Static Linkin..
HALTING Problem
·
CS/Data Structure
문제프로그램 M과 입력 X가 있을 때, M에 입력 X를 주고 수행시키면 종료할 것인가? M은 그냥 어떠한 프로그램 X는 어떠한 문자열 ex) abcabadM과 X가 모두 문자열이라고 가정함 명확한 두 가지 경우가 존재함1. 멈추는 것을 알 수 있는 경우 * 안 읽고 멈추는 것도 멈추는 것임 2. 멈추지 않는 것을 알 수 있는 경우 ex) 문자열을 입력받고 또 다음 문자열을 위해 기다리는 행위 등 HALTING Problem은 어떤 프로그램이 종료하지 않는지를 돌려보기 전에 알아야한다.Q. 돌려보기 전에 알아야하는 이유는 뭘까?A. 돌려봐서 끝난다면 끝나는 것을 알 수 있지만, 안 끝나고 있다면 "언젠가는" 끝난다는 것을 말할 수 있어야함ex) 10시간을 기다렸기에 끝나지 않을지, 10시간을 기다렸지만 언..