본문 바로가기

전체 글79

깊이 우선 탐색(depth-first search, DFS) 깊이 우선 탐색이란? 트리에서는 왼쪽 노드부터 확인하여 탐색하지 않은 경우에 왼쪽노드에 넘어가고를 반복하여 마지막 깊이까지 들어간 뒤 마지막 노드의 인접 노드들을 전부 탐색한 뒤 백트래킹을 하며 탐색하지 않은 노드들을 탐색한다. 단지 현 경로상의 노드들만을 기억하면 되므로 저장공간의 수요가 비교적 적다. 목표노드가 깊은 단계에 있을 경우 해를 빨리 구할 수 있다. 해가 없는 경로에 깊이 빠질 가능성이 있다. 따라서 실제의 경우 미리 지정한 임의의 깊이까지만 탐색. 얻어진 해가 최단 경로가 된다는 보장이 없다. 탐색 지점에서 일직선으로 탐색을 해나가는 느낌 설명 방문을 체크하는 배열 존재 시작 노드를 설정한 뒤 DFS메서드를 불러오고 시작노드의 방문체크를 true로 바꾼다. DFS메서드에서는 설정한 시작노.. 2019. 10. 10.
파일 시스템 접근하기 fs 모듈의 사용 방법 ...더보기 //파일명: readme.txt HelloHello //파일명: reaedFile.js const fs = require('fs'); fs.raedFile('./readme.txt', (err, data) => { if(err){ throw err; } console.log(data); console.log(data.toString()); }); 명령어: node readFile 결과: HelloHello readFile의 결과물은 Buffer 형식으로 제공된다. (data - Buffer형식) 따라서 toString을 사용하여 문자열로 변환해야지 읽을 수가 있다. //파일명: writeFile.js const fs = require ('fs'); fs.writeFil.. 2019. 10. 10.
모듈 만들기 만드는 방법 //파일명: var.js const odd = '홀수입니다'; const even = '짝수입니다'; module.exports = { odd, even, }; module.export에 값을 넣으므로써 모듈로써 활용 가능하다. 다른 모듈에서 변수 odd와 even 사용가능! //파일명: func.js const {odd, even} = require('./var'); function checkOddOrEven(num){ if(num%2){ return odd; } return even; } module.exports = checkOddOrEven; require함수 안에 불러올 모듈의 경로를 넣어주면(위의 경우에는 같은 폴더안에 있는 경우) 임포트한 모듈에서 module.export에 넣어.. 2019. 10. 10.
네트워크(프로그래머스, Java) 문제링크: https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 | 프로그래머스 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크 programmers.co.kr 알고리즘 설명: 이미지 영역을 찾는 문제는 좌표에서 상하좌우로 .. 2019. 10. 9.
N으로 표현(프로그래머스, Java) 문제링크: https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 | 프로그래머스 programmers.co.kr 알고리즘 설명: 모든 노드의 경우를 확인하여 가장 적은 count 수를 찾기 위해 DFS 탐색방법을 사용하였다. 재귀함수를 이용하여 DFS를 구현하였다. 재귀함수로 값을 찾다가 찾는 경우 return으로 돌아가기보다는 전역변수로 answer를 만들어 바로 값을 넣어주고 함수를 return하여 종료해버린다. 숫자 사용 개수가 8개가 넘는 경우 (사용 개수는 count로 체크) answer는 -1 재귀함수를 돌다가 값을 처음 찾은 경우에는 answer에 count 값을 넣어준다. 또 함수에서 값을 찾았지만 다른 재귀함.. 2019. 10. 8.
너비 우선 탐색(Breadth-first search, BFS) 너비 우선 탐색이란? 시작 정점에서 인접한 모든 정점들을 우선 탐색하는 방법 OPEN List(검색 가능성이 있는 노드의 집합)는 큐(Queue)를 사용해야지만 레벨 순서대로 접근 가능 출발노드에서 목표노드까지의 최단 길이 경로를 보장한다. 경로가 매우 길 경우, 탐색 가지가 급격히 증가하여 보다 많은 기억 공간이 필요하다. 탐색 지점에서 둥그렇게 탐색을 해나가는 느낌 설명 방문을 체크하는 배열존재 시작노드를 큐에 넣고 탐색시작 이중 반복문을 사용! - 큐 안에 있는 값을 pop하고 pop해서 나온 값의 인접한 노드에 대해서 가져오고 방문한 적 없는 노드에 경우 방문체크해주고 큐안에 노드를 넣어준다. 예시 코드(Java) import java.io.*; import java.util.*; /* 인접 리스.. 2019. 10. 6.