본문 바로가기

Computer5

BFS를 이용해 최단거리 구하기 [1] BFS(너비우선탐색) 알고리즘은 보통의 경우 tree나 graph의 노드들을 탐색하기 위해queue 자료구조를 이용해 아래와 같은 순서로 동작한다. 1. queue가 비어있는지 확인한다. 비어있으면 종료한다. 2. 비어있지 않다면 queue의 head를 pop해 현재 노드로 접근한다. 3. 현재 노드에서 이동가능한 노드들 중 아직 방문하지 않은 노드를 queue에 push한다.4. 1번으로 돌아간다. [2] 하지만 여기서 queue에 push하는 조건을 아래와 같이 바꾸면 최단 거리를 구하는데 사용할 수 있다. 현재 노드에서 방문 가능한 노드 중 아직 방문하지 않은 노드=> 현재 노드에서 방문 가능하고 (기존에 계산한 출발지에서 다음 노드까지의 거리)보다 (출발지에서 현재 노드까지의 거리 + 현재.. 2018. 6. 12.
Virtual Box(버추얼 박스)에서 처음 우분투(Ubuntu) 실행시 발생하는 해상도 문제 해결하기 virtual Box에 우분투를 설치하고 처음 실행하면 우분투의 해상도가 (800 * 600)인가로 고정이 되어서 화면이 굉장히 작고 설정창에서도 해상도 변경이 불가능한 상태로 되어있어서 굉장히 불편한데요. 이러한 문제는 virtual box에 게스트 확장 설치가 되어있지 않아서 발생한다고 합니다. 게스트 확장 설치 방법은 아래와 같습니다. 1. 우선 virtual box에서 우분투를 실행합니다. 2. 우분투의 부팅이 끝나면 아래 캡쳐화면과 같이 '장치 -> 게스트 확장 CD 이미지 삽입'을 클릭합니다. 3. 게스트 확장 설치에 필요한 권한을 얻기 위해 패스워드를 입력하라는 창이 뜨는데 우분투를 설치하면서 설정했던 비밀번호를 입력하시면 됩니다. 4. 터미널 창이 뜨면서 설치가 되는 과정이 출력되는데 설치.. 2015. 7. 24.
cmd를 이용해 Java(자바) 컴파일하기 1. 자바로 작성된 코드를 컴파일해 바이트코드를 생성하기 위해선 우선 JDK가 필요하다. JDK(Java Development Kit)는 자바 개발도구로써 자바를 이용해 개발하는데 필요한 프로그램들이 포함되어 있다. - JDK는 JVM(Java Virtual Machine, 자바가상머신), 자바클래스 라이브러리(Java API) 등을 포함하고 있다. http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html - jdk는 자신의 컴퓨터 환경에 맞는 버전으로 다운받아야한다. 예를 들어, 내 컴퓨터는 Windows8 64비트 운영체제이기 때문에 Windows x64버전을 다운받으면 된다. 2. JDK의 설치가 끝났다면 .. 2015. 2. 26.
리눅스(우분투) putty로 접속하기 1. 리눅스(우분투) 설치 가장 먼저 해야할 일은 역시 리눅스를 설치하는 일입니다. 저는 여러 리눅스 중 우분투를 선택해서 설치해서 사용했구요.. 제가 사용한 우분투 버전은 ubuntu-14.04.1-desktop-amd64 입니다. - 우분투 리눅스 : http://www.ubuntu.com/ - VirtualBox : https://www.virtualbox.org/ 2. 리눅스 환경 설정 우분투의 설치가 끝난 이후에는 terminal을 실행시켜 아래와 같은 작업들을 해줍니다. (1) 첫번째로 sudo -s 명령어를 입력해 root 권한을 획득합니다. 이때 2번째 빨간 밑줄과 같이 패스워드를 입력하라고 나오는데 우분투를 처음 설치하시면서 설정하셨던 패스워드를 입력하시면 됩니다. 리눅스의 특징상 패스워.. 2015. 1. 12.
유클리드 알고리즘(Euclideans Algorithm) C/C++ 소스 코드 - 유클리드 알고리즘(Euclideans Algorithm) : a, b, q, r 이 정수라고 가정할 때 a = b * q + r => gcd(a,b) = gcd(b,r) 의 원리를 이용해 a,b의 최대공약수를 구한다. - C/C++소스코드 #include int Eucl(int, int); //유클리드 알고리즘을 구현한 함수의 정의 int main(void){ int a, b, big; // a, b는 입력받을 두 정수, big은 두 수를 비교할 때 사용할 변수 int gcm; // 유클리드 알고리즘 함수의 반환값을 받기 위한 변수 scanf_s("%d %d", &a, &b); // a, b 두수를 입력 받는다. if (a>b){ // a, b를 비교해서 b쪽에 큰 수가 오도록 정렬하는 조건문 big.. 2013. 7. 3.