본문 바로가기

개발로그/알고리즘52

[JS] 프로그래머스 Lv.1 K번째 수 [JS] 프로그래머스 Lv.1 K번째 수 문제 - 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하라. - 배열 array와 [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어진다. - 연산을 적용한 결과를 배열에 담아 return하라. 제한사항 - array의 길이는 1 이상 100 이하 - array의 각 원소는 1 이상 100 이하 - commands의 길이는 1 이상 50 이하 - commands의 각 원소는 길이가 3 예시 array commands return [1,5,2,6,3,7,4] [ [2,5,3], [4,4,1], [1,7,3]] [5,6,3] 풀이 1. forEach 함수로 commands의 원소들에 접근한다... 2024. 1. 16.
[DFS] 백준 연결 요소의 개수 11724번 [DFS] 백준 연결 요소의 개수 11724번 문제 설명 방향 없는 그래프가 주여졌을 때, 연결 요소의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다. 출력 첫째 줄에 연결 요소의 개수를 출력한다. ** 풀이 방법 정점과 인접 노드를 나타낼 ArrayList와 탐색 여부를 나타낼 boolean 배열을 선언한다. static ArrayList[] A; static boolean[] visited; 정점과 간선을 입력 받는다. BufferedReader bf = .. 2023. 8. 9.
[DFS] 백준 DFS와 BFS 1260번 [DFS] 백준 DFS와 BFS 1260번 문제 설명 그래프로 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다... 2023. 8. 9.
탐색 탐색 - 주어진 데이터에서 자신이 원하는 데이터를 찾아내는 알고리즘 깊이우선탐색(DFS) 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행 한 번 방문한 노드를 다시 방문하면 안 되므로 방문 여부를 체크해야 함 기능 특징 시간 복잡도 그래프 완전 탐색 재귀 함수로 구현(스택 오버플로 유의) 스택 이용 O(노드 수+에지 수) 너비우선탐색(BFS) 시작 노드에서 출발해 시작 노드를 기준으로 가까운 노드를 먼저 방문하면서 탐색 선입선출 방식으로 탐색해 큐를 이용해 구현 목표 노드에 도착하는 경로가 여러 개일 때 최단 경로를 보장 기능 특징 시간 복잡도 그래프 완전 탐색 FIFO 탐색 큐 이용 O(노드 수 + 에지 수) 2023. 8. 9.
반응형