CodingTest46 Binary Search (이진 탐색) Binary Search (이진 탐색)정렬 등과 함께 쓰이는 기초적인 알고리즘으로, 큰 리스트를 두 부분으로 나누고 탐색의 범위를 나눠진 리스트 중 하나에서만 찾아감으로서 범위를 좁히는 알고리즘 기법이다. 보통 start mid end 라는 세 개의 변수를 두고, mid값을 기준으로 리스트를 나눈 뒤, 크다면 mid값을 start로, 작은 부분에 속한다면 mid값을 end로 두고 탐색의 범위를 좁힌다. 코틀린은 binarySearch라는 라이브러리 함수를 지원한다.fun main() { val arr = IntArray(100) {it} // (1,2,3,4 ... 100) // 50을 찾는 경우 println(arr.binarySearch(50)) // 출력: 50 // 찾는 원.. 2024. 9. 9. 프로그래머스 3레벨 - 네트워크 문제 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 정수로 표현합니다. i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 computers[i].. 2024. 9. 8. 프로그래머스 2레벨 - 타겟 넘버 문제 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인.. 2024. 9. 7. BFS, DFS (깊이 우선 탐색, 너비 우선 탐색) BFS (너비 우선 탐색)- 가까운 노드부터 우선적으로 탐색하는 알고리즘- 큐를 이용한다. 1. 시작 노드를 큐에 넣고 방문처리 한다.2. 노드를 하나 꺼내고, 인접 노드 중 방문하지 않은 노드를 모두 큐에 넣은 후 방문처리 한다.3. 더 이상 방문할 점이 없다면 한 층 내려가 인접한 모든 정점들을 방문한다. import java.util.*val queue: Queue = LinkedList()// 이웃 자식을 알아두기 위한 큐val visited = BooleanArray(100) // 정점이 100개라고 가정val edges = Array(100) { ArrayList() } // 그래프의 인접 리스트fun bfs(start : Int){ queue.add(start) visited[start.. 2024. 9. 7. 이전 1 ··· 5 6 7 8 다음 728x90 반응형