Cute Running Puppy
반응형

R.silver 131

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를 ..

algorithm/Baekjoon 2023.04.24

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 로 변환하기 정..

algorithm/Baekjoon 2023.04.24

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가 되어야 한다 블럭 {} {}을 사용하여 여러 문장을 하나의 단위로 묶을 수 있다 이것을 블럭이라 한다 } 다음에 ;을 붙이지 않는다는 것에 주의하자 블럭 안의 문장들은 탭으..