알고리즘
-
[유클리드 호제법] 최대공약수와 최소공배수알고리즘/정수론 2024. 5. 2. 17:43
유클리드 호제법은 최대공약수를 구하는 알고리즘이다. 최대공약수를 구해서 최소공배수 까지 구할수 있다.유클리드 호제법은 mod 연산을 통해 재귀함수 형식으로 구현한다. 두 개의 숫자 8,10이 있다고 가정하면 처음 두 값의 나머지 연산을 수행한다. 8 % 10 = 8 나머지 연산을 통해 나온 결과 값 8을 나누는 수로 넣어주고 처음 나누는 수를 나눠지는수에 넣어준다. 이렇게 다음 식은 10 % 8 = 2 가 된다. 그러면 또 똑같이 결과값 2를 나누는 수로 넣어주고 원래 연산에서 나누는 수를 나눠지는 수에 다시 넣어준다.8 % 2 = 0 이렇게 나머지가 0이 될때의 나누는 수가 두 숫자의 최대 공약수가 된다.최소공배수는 두 숫자를 곱해준 다음 최대공약수로 나누어준다면 구할 수 있다.10 * 8 / 2 =..
-
[알고리즘] 깊이 우선 탐색(DFS)알고리즘/DFS 2024. 3. 19. 22:29
DFS란? 깊이 우선 탐색으로 그래프 완전 탐색 기법중 하나로 탐색할 분기를 하나 정해 최대 깊이 까지 탐색을 마친 후 다른 분기로 이동하여 다시 탐색을 수행하는 알고리즘이다. DFS는 스택 이나 재귀 함수 구조로 구현한다. DFS는 한번 방문한 노드를 다시 방문하면 안되므로 노드 방문 여부를 체크하는 배열이 필요하다. DFS 탐색 하기 - 탐색은 재귀 함수 구조로 탐색해보려 한다. 0번부터 5번까지 노드와 간선이 존재하는 그래프이다. 이 그래프를 표로 표현해보면 노드(V) 연결된 노드 0 2 4 5 1 4 5 2 0 3 4 3 2 4 0 1 2 5 5 0 1 4 - 0번 노드는 2번, 4번, 5번 노드와 연결되어 있다. - 1번 노드는 4번, 5번 노드와 연결되어 있다. - 2번 노드는 0번, 4번 노..
-
[알고리즘] 백준 3460번 이진수 JAVA알고리즘 2023. 11. 5. 15:23
10진수를 2진수로 나타냈을때 1이 있는 자리수를 출력하는 문제다. 예를 들면 13을 2진수로 바꾸면 1101이 되는데 1이 있는자리는 2^0, 2^2, 2^3 이므로 0 2 3을 출력해야한다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); int n[] = new int[T]; String s[] = new String[T]; for (int i =0;i=0;j--) { if (s[i].charAt(j) =='1') { System.out.print(s[i].length()-1-j+" ");..