Cute Running Puppy
반응형

전체 글 124

[혼공컴운] chapter 03. 명령어

03-1. 소스 코드와 명령어 고급 언어와 저급 언어 고급 언어: 사람을 위한 언어 저급 언어: 컴퓨터를 위한 언어 예) 기계어, 어셈블리어 기계어: 0과 1의 명령어 비트로 이루어진 언어 고급 언어로 작성된 소스 코드는 반드시 저급 언어(명령어)로 변환되어야 한다 컴파일 언어와 인터프리터 언어 컴파일 방식: 소스 코드 전체를 저급 언어로 변환 -> 목적코드 생성 인터프리터 방식: 소스 코드를 한 줄씩 실행 목적 파일 vs 실행 파일 목적 파일: 목적 코드로 이루어진 파일 실행 파일: 실행 코드로 이루어진 파일 링킹: 목적 코드를 실행 코드로 변환하는 과정 03-2. 명령어의 구조 연산 코드와 오퍼랜드 명령어 = 연산 코드 + 오퍼랜드 연산 코드 (== 연산자): 명령어가 수행할 연산 오퍼랜드 (== 피..

[혼공컴운] chapter 02. 데이터

| 참고 도서: 혼자 공부하는 컴퓨터 구조+운영체제 02-1. 0과 1로 숫자를 표현하는 방법 정보 단위 비트 (bit): 가장 작은 정보 단위 바이트(byte): 8비트 킬로바이트(kB): 1000byte 메가바이트(MB): 1000kB 기가바이트(GB): 1000MB 테라바이트(TB): 1000GB 워드: CPU가 한 번에 처리할 수 있는 데이터의 크기 이진법 이진법: 0과 1으로 모든 숫자를 표현 하는 방법 음수 표현: 2의 보수법 + flag 사용 십육진법 이진법으로 모든 숫자를 표현하면 숫자의 길이가 너무 길어짐 & 이진법으로 변환하기 쉬움-> 십육진법으로 해결 15를 넘어가는 시점에서 올림 0x--으로 표시 이진수 -> 십육진수: 네자리씩 십육진수로 변환하고 이어 붙이기 십육진수 -> 이진수:..

[혼공컴운] chapter 01. 컴퓨터 구조 시작하기

| 참고 도서: 혼자 공부하는 컴퓨터 구조+운영체제 01-1. 컴퓨터 구조를 알아야 하는 이유 컴퓨터 구조 이해를 통해 문제 해결 능력 향상 성능/용량/비용을 고려하여 개발 가능 01-2. 컴퓨터 구조의 큰 그림 컴퓨터 구조 지식 컴퓨터가 이해하는 정보 컴퓨터의 네 가지 핵심 부품 컴퓨터가 이해하는 정보 데이터: 0 과 1로 이루어진 정보 명령어: 데이터를 움직이고 컴퓨터를 작동시키는 정보 => 명령어: 컴퓨터 작동 정보, 데이터: 재료 컴퓨터의 4가지 핵심 부품 중앙처리장치 (CPU) 주기억장치 (메모리 - RAM, ROM, ...) 보조기억장치 입출력장치 1. 메모리 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품 => 실행되기 위해서는 반드시 메모리에 프로그램이 저장되어 있어야 한다 주소:..

BFS

Breadth First Search 너비 우선 탐색 가까운 노드부터 탐색하는 알고리즘 큐 자료구로를 사용하는 것이 정석 (인접한 노드를 큐에 넣으면 먼저 들어온 것이 먼저 나가게 되므로 가까운 노드부터 탐색할 수 있다) 사용하는 경우 (유형) 연결된 그래프를 탐색하는 경우 최단 거리(최소 횟수)를 구하는 경우 (현재 노드에서 가까운 곳을 먼저 찾기 때문) 그래프의 규모가 크지 않고 시작 지점으로부터 대상이 멀지 않은 경우 cf) 경로의 특징을 저장하는 경우에는 DFS 사용 (BFS는 경로의 특징을 가질 수 없다) 동작 방식 탐색 시작 노드를 큐에 삽입하고 방문 처리 큐에서 노드를 꺼내 인접 노드 중 방문하지 않은 노드를 모두 큐에 삽입하고 방문처리 2번을 더 이상 수행할 수 없을 때까지 반복 code ..

2468_안전 영역

문제 2468번: 안전 영역 (acmicpc.net) 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 접근 방식 1. 상하좌우를 돌며 내린 비의 양보다 높은 곳이 있는지 파악한다 -> DFS 활용 2. 높다면 방문처리 한 뒤 return True 3. 낮다면 return False 이 과정을 가장 높은 지역 크기 만큼 반복 (내리는 비의 양) 주의할 점 1. 재귀 함수 범위에 주의하자 # 재귀 함수 범위를 늘려주는 코드 import sys sys.setrecursionlimit(10**7) 2. 제공된 graph를 ..

2667_단지번호붙이기

2667번: 단지번호붙이기 (acmicpc.net) 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 접근 방법 상하좌우를 모두 돌며 집이 연결되어 있는지 확인 -> DFS 사용 1. 노드 == 1이면 0으로 변경하고 상, 하, 좌, 우 확인 후 return True 2. 노드 == 0 이면 return False 3. global 변수를 사용하여 상하좌우 확인할 때 집의 개수 추가 주의 할 점 1. 상하좌우를 확인 할 때 범위를 넘어갈 수 있으므로 미리 예외 처리 하기 2. graph 값 int 로 변환하기 정..

DFS

Depth First Search 깊이 우선 탐색 그래프의 깊은 부분을 우선적으로 탐색하는 알고리즘 특정 경로로 탐색하다가 특정 상황에서 최대한 깊숙히 들어가 노드를 방문한 뒤, 다시 돌아가 다른 경로로 탐색하는 알고리즘 다음 분기로 넘어가기 전 해당 분기를 완벽하게 탐색하는 방법 BFS 보단 느리다 (단순 검색 속도) 백트래킹과 연관된다 DFS를 사용하는 경우 모든 노드를 방문하고자 할 때 순회를 하고자 할 때 경로에 특징을 저장해야 할 때 검색 대상 그래프가 클 때 cf) 최단거리는 BFS가 유리 동작 방식 탐색 시작 노드를 스택에 삽입하고 방문 처리 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를..

android 버튼으로 unity 실행하기

안드로이드 프로젝트에서 버튼을 누르면 유니티가 실행되도록 하는 방법 요약 1. 유니티에서 게임을 export 한다 2. 안드로이드에서 export 한 게임을 Library로 추가한다 3. 추가한 Library를 안드로이드 액티비티와 연결한다 Unity에서 게임 export 하는 방법 1. 유니티 접속 2. file → build setting → android → player setting 위의 사진과 같이 설정해 준다 패키지 이름 변경해주는 것도 잊지 말아야 한다 3. x 로 페이지 나가기 4. export 설정해서 추출하기 export 한 게임을 안드로이드에서 library로 추가하는 방법 build.gradle (project)에 아래 코드 추가 flatDir { dirs "${project(':u..

mobile/android 2023.04.12

[자바의 정석] chapter06. 객체지향 프로그래밍1 (2)

오버로딩 (overloading) 오버로딩이란? 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것 ⇒ 메서드 오버로딩 오버로딩의 조건 메서드 이름이 같아야 한다 매개변수의 개수 또는 타입이 달라야 한다 이름이 같더라도 매개변수가 다르기에 메서드가 구분될 수 있다. 조건을 만족시키지 않으면 중복 정의로 간주되어 컴파일 에러가 발생한다 반환 타입을 통해서만 구별되므로 반환타입은 영향을 미치지 않는다 (반환타입만 다르면 함수 중복으로 간주된다) 매개변수의 순서가 다르더라도 오버로딩된다 // 오버로딩 가능 long add (int a, long b); long add (long a, int b); 사용자가 매개변수의 순서를 외우지 않아도 되지만 add(3,3)과 같이 호출할 경우 어느 메서드가 호출된 ..

[자바의 정석] chapter06. 객체지향 프로그래밍1 (1)

객체지향언어 객체지향언어의 역사 기본 이론 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다 객체지향언어 주요 특징 코드의 재사용성이 높다 새로운 코드를 작성할 때 기존의 코들를 이용하여 쉽게 작성할 수 있다 코드의 관리가 용이하다 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다 신뢰성이 높은 프로그래밍을 가능하게 한다 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다 코드의 재사용성이 높고 유지보수가 용이하다라는 특징은 프로그램 개발, 유지보수에 드는 시간과 비용을 획기적으로 개선하였다 재사용성, 유지보수, 중복 코드 제거라는 3가지 관점에서 객체 지..

[자바의 정석] chapter 05. 배열 array

배열 (array) 배열(array)이란? 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 // 5개의 int를 저장할 수 있는 배열 int [] score = new int[5]; // score은 배열을 다루는 데 필요한 참조 변수 O, 저장공간 X 저장공간이 연속적으로 배치되어 있다 배열의 선언과 생성 // 선언 방법 1 // 타입 [] 변수이름; int [] score; // 선언 방법 2 // 타입 변수이름[]; int score[]; 배열의 생성 배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간을 만드는 것 매열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다 선언 생성 역할 참조 변수를 위한 공간 할당 값을 저장할 수 있는 공간 할당 방법 타입 ..

[자바의 정석] chapter 04. 조건문과 반복문 (if, switch, for, while, statement)

chap 04. 조건문과 반복문 제어문 (control statement) 프로그램의 흐름을 바꾸는 역할 1. 조건문 - if, switch 조건식 + {}으로 구성 조건식의 연산결과에 따라 실행할 문장이 달라져 프로그램의 실행흐름을 변경할 수 있다 1.1 if 문 조건문이 true이면 {} 안의 문장 수행 if (조건식) { // 조건식 == true 일 때 실행 } 조건식 일반적으로 비교연산자와 논리연산자로 구성 등가 연산자 (==) 대신 대입 연산자 (=)를 사용하지 않도록 주의하자 조건식의 결과는 반드시 true, false가 되어야 한다 블럭 {} {}을 사용하여 여러 문장을 하나의 단위로 묶을 수 있다 이것을 블럭이라 한다 } 다음에 ;을 붙이지 않는다는 것에 주의하자 블럭 안의 문장들은 탭으..

[자바의 정석] chapter 03. 연산자 operator

1. 연산자 (operator) 연산을 수행하는 기호 1.1 연산자와 피연산자 연산자 (operator): 연산을 수행하는 기호 피연산자 (operand): 연산의 작업 대상 (변수, 상수, 리터럴, 수식) 연산자는 피연산자로 연산을 수행하고 나면 항상 결과 값을 반환한다 1.2 식과 대입연산자 식: 연산자와 피연산자를 조합하여 계산하고자 하는 바를 표현한 것 식 평가: 식을 계산하여 결과를 얻는 것 작성한 식을 프로그램에 포함시키기: 식의 끝에 ‘;’ 붙이기 평가된 값은 대입 연산자 ’=’를 사용해야만 저장된다 1.3 연산자의 종류 분류1. 산술, 비교, 논리, 대입 연산자 분류2. 단항, 이항, 삼항 연산자 1.4 연산자의 우선순위와 결합 규칙 연산자가 둘 이상일 경우, 연산자의 우선순위에 의해 연산..

[후니의 쉽게 쓴 시스코 네트워킹] PART 07. 라우터만 알면 네트워크 도사? -1

section 01. 라우터를 한마디로 말하자면... 지능을 가진 경로 배정기 1. 인터넷 사용을 위해 2. 서로 다른 네트워크와 통신하기 위해 3. 브로드캐스트 영역을 나누기 위해 section 02. 라우터는 무슨 일을 할까요? 라우터가 하는 일 1. path determination (경로 설정) 데이터 패킷이 목적지까지 갈 수 있는 길을 검사하고 어떤 길로 가는 것이 가장 적절한지 결정 2. swithching (스위칭) 길이 결정되면 그 쪽으로 데이터 패킷을 스위칭 (스위치가 하는 일과는 다르다) *라우팅 프로토콜 (라우팅 알고리즘) 라우터가 가장 좋은 길을 찾는 알고리즘 이를 위해서 라우팅 테이블을 만든다 +) 라우터는 위와 같은 기능들을 수행하기 위해서 cpu, memory, interfac..

[후니의 쉽게 쓴 시스코 네트워킹] PART 06. 스위치를 켜라! - 2

section 13. 맥 어드레스는 어디에 저장되어 있을까요? *스위치/브리기가 맥 어드레스 사용하는 방법 1. 출발지에서 들어오는 맥 어드레스를 확인 2. 맥 어드레스 테이블에 맥 어드레스 저장 3. 주소 테이블에 있는 맥 어드레스를 확인하고 그 쪽 포트로 보내거나 막으면서 콜리전 도메인을 막는 역할을 함 (시스코) 스위치가 맥 어드레스를 저장하는 방법 1. Dynamic - 자동으로 맥 어드레스를 학습하는 방법 (디폴트) - 300초 (디폴트)가 지나면 자동으로 삭제됨 2. Permanent - 수동으로 맥 어드레스를 지정하는 방법 (static address) - 자동으로 절대 지워지지 않음 - 해당 맥 어드레스를 알기 위해 Learning 과정을 거칠 필요 없음 - 많이 사용되지 않는 방법 sec..

[후니의 쉽게 쓴 시스코 네트워킹] PART 06. 스위치를 켜라! - 1

section 02. 스패닝 트리로 가는 첫 번째 관문 2가지 *스패닝 트리 알고리즘 (STP) 브리지/스위치에서 발생하는 루핑을 막아주기 위한 프로토콜 - 출발지로부터 목적지까지의 경로가 2개 이상 존재할 때 1개의 경로만을 남기고 나머지를 끊어두었다가 경로에 문제가 생겼을 때 다시 사용하는 방법 브리지 ID 브리지/스위치들이 통신을 할 때 서로를 확인하기 위해 하나씩 가지고 있는 번호 (스위치도 ID가 있지만 브리지 ID라고 부른다) - 브리지 아이디는 16비트의 bridge priority와 48비트의 mac address로 이루어져 있다 - 여기서 사용되는 mac address는 스위치에 고정되어 있는 값으로 각 스위치의 고유 주소를 의미한다 - 브리지 ID는 스패닝 트리 프로토콜을 수행할 때 중..

[후니의 쉽게 쓴 시스코 네트워킹] PART 05. IP 주소로의 여행

section 01. IP 주소 이야기 - 1탄 IP 주소 TCP/IP 프로토콜을 만들 때 이 프로토콜을 사용하는 모든 장비들을 구분해주기 위해서 만들어낸 것 - 이진수 32자리로 되어 있다 - 각 8자리 (octet) 사이에는 점을 찍는다 - 10진수로 나타낸 ip 주소를 다시 이진수로 변환하여 사용한다 section 02. 라우터에서 IP 주소 이해하기 라우터에 IP 주소를 배정하는 규칙 *이더넷 인터페이스 내부 네트워크에 연결되는 라우터의 포트 *시리얼 인터페이스 외부 인터넷족으로 연결되는 인터페이스 가정에서 이더넷 인터페이스가 1개이고 시리얼 인터페이스가 2개인 라우터를 사용한다면 해당 라우터에 부여해야 하는 IP 주소는 2개가 된다 1. 이더넷 인터페이스에 부여할 주소 - 내부에서 사용하기 위해..

[후니의 쉽게 쓴 시스코 네트워킹] PART 04. 네트워크 장비에 관한 이야기

section 01. 랜카드도 세팅해야 하나요? *NIC network interface card (랜카드) 1. 유저의 데이터를 케이블에 실어서 허브, 스위치, 라우터 등으로 전달 2. 전달된 데이터를 CPU에게 전달 - 들어온 프레임의 목적지 MAC address를 보고 자신의 MAC address와 비교한 후 자기 것이 아니면 버린다 설치 위치에 따른 구분 - 데스크톱 랜카드 각 데스크탑에서 사용하는 BUS 방식을 고려하여 데스트톰 랜카드를 결정해야 한다 - 노트북용 랜카드 PCMCIA 방식 속도에 따른 구분 100Mbps 10Gbps 등등 7레이어를 지나는 동안 데이터들이 추가되고, 다양한 overhead가 존재하기에 실제로 저 정도의 속도가 나오지는 않는다 접속 케이블에 따른 구분 TP, BNC..

[후니의 쉽게 쓴 시스코 네트워킹] PART 03. TCP/IP와의 만남

TCP/IP 인터넷을 사용하기 위한 프로토롤 => 인터넷에서의 공용어 특징 각각의 네트워크에 접속되는 호스트들을 고유의 주소를 가지고 있어서 자신이 속해 있는 네트워크뿐만 아니라 다른 네트워크에 연결되어 있는 호스트까지도 서로 데이터를 주고받을 수 있도록 만들어져 있다. 1. ip 주소가 같으면 안된다. 2. 네트워크별로 동일한 네트워크 부분을 가져야 한다 3. 네트워크별로 서브넷 마스크를 동일하게 가져야 한다 IP 전 세계에서 나만이 가지고 있는 것 원칙적으로는 같은 주소를 사용하면 ip 주소가 충돌 난다 그러나 현재 사용할 수 있는 ip 주소를 거의 다 사용했기에 각자가 다른 ip 주소를 사용한다는 것이 어려워짐 따라서 NAT 방식 혹은 PAT 방식등을 사용하여 ip 주소를 공유한다. *NAT 방식 ..