[Java] 순열 Permutation
순열 순열이란 n 개의 값 중에서 r 개의 숫자를 모든 순서대로 뽑는 경우를 말한다. 수학에서 순열은 서로 다른 n개의 원소에서 r개를 뽑아한 줄로 세우는 경우의 수이다. 순열의 개수는 n의 계승 n! 와 같다. 예를 들어 [1, 2, 3] 배열에서 2개의 숫자를 뽑는 순열은 [1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2] 참고 순열이라는 것은 주어진 수열에서 순서에 따라 결과가 달라지는 방식을 순열이라고 한다. 말 그대로, 순서가 존재하는 열이라는 것이다. 즉 순열에서 { 1, 2, 3 } 과 { 1, 3, 2 } , { 2, 1, 3 } 등.. 모두 다른 결과를 가져온다. 순서가 다르기 때문이다. 조합은 순서가 상관이 없는 모임을 의미한다. 순서가 상관없기 때문에 { 1, ..
2020. 5. 12.
[Java] Graph 그래프 / 인접 행렬 / 인접 리스트
뇌를 자극하는 알고리즘 (박상현 저)를 참고해 정리한 내용입니다. Graph란? 객체 사이의 연결 관계를 표현할 수 있는 자료구조 정점의 집합과 간선의 집합의 결합 즉, 정점과 간선으로 이루어진 자료구조의 일종 G : 그래프 Vertex : = 노드(node) 또는 정점의 집합 Edge : 간선의 집합 (= link) 라고 했을 때, G = (V, E)이다. 간선으로 연결되어 있는 두 정점을 가리켜 서로 '인접(adjacent)' 또는 이웃 관계에 있다고 말한다. (A, B), (A, D), (A, E), (B, C), (B, E), (C, D)가 서로 이웃 관계에 있다. 이렇게 간선을 통해 서로 이웃이 된 각 정점은 그래프 안에서의 길을 형성하기도 한다. 예를 들어 정점 A에서 정점 C까지는 A, B,..
2020. 5. 9.