알고리즘185 유클리드 호제법(Euclidean algorithm) 이론 1. 유클리드 호제법이란? 두 개의 정수 혹은 다수의 자연수에서 최대공약수를 구하는 알고리즘이다. 원리는 두 수가 서로 나눠서 나머지를 구한다. 만약 나머지가 0이면 그 수가 최대 공약수가 되는것이다. 만약에 나머지가 0이 아니면 나머지가 0일 될때까지 두 수를 나누어 주면 된다. 기존 최대공약수를 구할때는 2개 이상에 각 수의 약수를 구한다음 공통으로 있는 약수중 최대값을 구해야 했다. 위의 그림을 보면 30, 24에서 학교에서 기본것으로 배운 토대로 최대공약수를 구한다면 먼저, 약수를 구해서 공통된 수가 6, 3, 2, 1이고 이중에서 가장 큰것이 6이다. 6이라는 숫자가 30, 24 최대 공약수이다 수가 30, 24라서 각 약수의 수가 적어서 구하는데 금방 걸리는데 100단위 또는 1000단위.. 2022. 9. 21. [BAEKJOON] 24060 알고리즘 수업 - 병합 정렬 1 병합정렬 병합정렬은 정렬 알고리즘중 하나이다. 병합 정렬의 자세한 내용은 아래 사이트에 참조 하면 된다. https://ko.wikipedia.org/wiki/%ED%95%A9%EB%B3%91_%EC%A0%95%EB%A0%AC 합병 정렬 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 합병 정렬 또는 병합 정렬(merge sort)은 O(n log n) 비교 기반 정렬 알고리즘이다. 일반적인 방법으로 구현했을 때 이 정렬은 안정 정렬에 속하며, 분할 정복 알고리 ko.wikipedia.org 문제 요약 알고리즘 분류: 정렬, 재귀 난이도: Silver4 문제내용: 문자열길이를 출력한다. 사이트 주소: https://www.acmicpc.net/problem/24060 24060번: .. 2022. 9. 19. [BAEJOON] 2743 단어 길이 재기 문제 요약 알고리즘 분류: 문자열 난이도: Bronze5 문제내용: 문자열길이를 출력한다. 사이트 주소: https://www.acmicpc.net/problem/2743 문제풀이 Python은 len 내장함수를 사용한다 Java는 length 메소드를 사용한다. 코드 Python print(len(input())) Java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new.. 2022. 9. 19. [BAEKJOON] 25501 재귀의 귀재 문제 요약 알고리즘 분류: 문자열, 재귀 난이도: Bronz2 문제내용: 첫째 줄 테스트 케이스 T와 T개 만큼 문자열을 입력한다. isPalindrome 함수 만들고 각 테스트 케이스마다 팰린드롬 여부와 재귀 호출 몇번 했는지 출력한다. 사이트 주소: https://www.acmicpc.net/problem/25501 25501번: 재귀의 귀재 각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다. www.acmicpc.net 문제 풀이 isPalindrome 선언하고 파라미터 오른쪽 왼쪽 인덱스를 선언한다. 왼쪽 인덱스 수와 오른쪽 인덱스 수랑 같거나 큰경우 팰린드롬 참으로 한다. 왼쪽 인덱스 값과 오르쪽 인덱스 값이 다.. 2022. 9. 10. [BAEJOON] 1037 약수 문제 요약 알고리즘 분류: 정수론, 수학 난이도: Bronz1 문제내용: 첫째 줄 N과 N의 개수 만큼 약수가 있다. 사이트 주소: https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net 문제 풀이 최소 공배수로 접근 하면 안된다. → why? 최소 공배수는 밑의 수를 다 포함한 약수인데 2, 3, 5의 최소 공배수가 30인데. 30의 약수로는 2, 3, 5, 10, 15가 와야 하기 때문에 말이 안된다. 배열 또는 리스트로 선언한 다음 배열안의 최소 최대 곱하면 된다. CODE JAVA im.. 2022. 9. 6. [BAEJOON] 5058 배수와 약수 문제 요약 알고리즘 분류: 수학 난이도: Bronz3 문제 내용: 0 ,0 입력 될때 까지 2개 정수를 입력한다. 첫 번째 숫자를 두번째 숫자에 나눠서 떨어지면 약수 두번째 숫자를 첫 번째 숫자에 나눠서 떨어지면 배수 그 외는 둘 다 아니다를 출력한다. 사이트 주소: https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net 문제 풀이 while문으로 돌리고 두개의 입력값이 0, 0일때 반복 루프에서 빠져 나온다. 첫번째 값 하고 두반째깂에서 첫번째 값이 두번째 값을 나눠서 나머지가 0이면 약수,.. 2022. 9. 6. 이전 1 ··· 27 28 29 30 31 다음