본문 바로가기
반응형

개발/알고리즘36

알고리즘 4 : 부분집합인지 검사하기 문제 : 두개의 배열(base,sample)을 입력받아 sample이 base의 부분집합인지 여부를 리턴 입력 : base : - number 타입을 요소로 갖는 배열, base.length는 100 이하 sample : - number타입을 요소로 갖는 배열, sample.length는 100이하 출력 : boolean 타입 리턴 주의사항 : base, sample내 중복되는 요소는 없다 시간복잡도를 개선하여 base,sample의 길이가 70,000 이상일 때에도 정상적으로 작동할 수 있게 하자. 입출력 예시 let base = [1, 2, 3, 4, 5]; let sample = [1, 3]; let output = isSubsetOf(base, sample); console.log(output);.. 2021. 9. 5.
알고리즘 3 : 연결된 정점들, BFS 시작에 앞서 그래프의 탐색은 하나의 정점에서 시작하여 그래프의 모든 정점을 한번씩 방문 하는 것이 목적이다. 때문에 하나씩 모두 방문하여 찾아야 하는데 상황에 따라 효과적인 방법이 있다. 그 중 가장 대표적인 방법 BFS, DFS를 소개한다. 이 둘은 탐색 순서만 다를 뿐, 모든 자료를 한번씩 확인해 본다는 점은 같다. 아래 jpg는 코드스테이츠 학습자료이다. DFS : 가장 가까운 길로 들어가서 막다른 길이 나올때까지 탐색한다. 그다음 다시 출발지점으로 와서 그 두번째로 가까운 길로 들어간다. 이를 반복하여 모든 길을 탐색함 BFS : 길을 끝까지 가지 않고 중간에 나온다. 그 후 다음 길에 들어가서 중간에 나온다. 반복하여 모든길을 얕게 탐색한 후, 다시 처음길로 들어가 더 깊게 탐색한다. 반복한다... 2021. 8. 30.
알고리즘 2 : 인접 행렬 길찾기 인접 행렬 길 찾기 주어진 인접행렬에서 한 정점으로부터 다른 정점으로 이어지는 길이 존재하는지 true/false 로 반환한다. 인자 1 : matrix 2차원 Array 인자 2 : from 시작 정점, number 타입 인자 3 : to 도착 정점, number 타입 입출력 예시 정점 0에서 2로 가는 길이 존재하는지 확인한다. 0 --> 1 로 가는 간선이 존재하고, 1 --> 2 로 가는 간선이 존재하기 때문에 true를 반환한다. const result = getDirections( [ [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1], [0, 1, 0, 0], ], 0, 2 ); console.log(result); // true 코드 function getDirecti.. 2021. 8. 29.
알고리즘 1 : 발표순서 발표순서 선생님은 짱구에게 발표할 조의 수 N과 발표 순서 k를 말해준다. 짱구는 모든 경우의 수를 따지고 k 순서가 몇 번째 경우의 수인지 대답해야 한다. 짱구가 올바른 답을 말할 수 있게 알고리즘을 작성해보자. 인자 1 : N number 타입이고 1 2021. 8. 29.
반응형