본문 바로가기

반응형

분류 전체보기

(400)
[BOJ] 백준 9020 골드바흐의 추측 (Swift) 문제 https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 풀이 이 문제는 에라스토테네스의 체 알고리즘을 사용하여 소수들을 구할 수 있습니다. 소수를 구하는 것은 쉽게 구할 수 있습니다. 이제 소수를 구한 후, 두 소수의 합이 입력받은 짝수와 같아지는 조건을 출력해주면 됩니다. 하지만, 문제의 조건중 두 소수의 차이가 가장 작은 것을 출력한다. 의 조건을 어떻게 해결해야 할지 고민을 해봐야합니다. 저는 맨 처음에는 두 소수의 합이..
[BOJ] 백준 4948 베르트랑 공준 (Swift) 문제 https://www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 풀이 이 문제는 에라토스테네스의 체 알고리즘을 사용하면 쉽게 풀이할 수 있습니다. https://dev-mandos.tistory.com/93 [알고리즘] 에라토스테네스의 체 (Swift) 에라토스테네스의 체 에라토스테네스의 체 알고리즘은 고대 그리스 수학자인 에라토스테네스가 만들어낸 소수를 찾는 알고리즘 입니다. 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네 dev-mando..
[BOJ] 백준 1929 소수 구하기 (Swift) 문제 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 풀이 에라토스테네스의 체 알고리즘을 사용하여, M부터 N까지의 소수를 출력해주면 되는 문제입니다. https://dev-mandos.tistory.com/93 [알고리즘] 에라토스테네스의 체 (Swift) 에라토스테네스의 체 에라토스테네스의 체 알고리즘은 고대 그리스 수학자인 에라토스테네스가 만들어낸 소수를 찾는 알고리즘 입니다. 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네 dev-mandos.tistory.com..
[BOJ] 백준 11653 소인수분해 (Swift) 문제 https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 풀이 소인수분해란, 소수들만의 곱으로 나타내는 것을 의미합니다. 에라토스테네스의 체를 사용해 소수들만으로 나누어 떨어지는지 확인해도 되지만.. 그냥 2부터 나누어 떨어지는지 확인하고, 나누어 떨어지지 않으면 값을 올려주고 확인하고.. 반복하는 방법으로도 풀이할 수 있습니다. n이 최대 1000만이기 때문에 시간안에 해결할 수 있지만, 시간을 줄일 수 있는 방법이 있을까요? n = ab 라면, a와 b중 둘 중 하나는 $\sqrt{n}$ 보다 작은 성질이 있습니다. 따라서 n이 1000만에 가까운 소수여도, $\..
[BOJ] 백준 2581 소수 (Swift) 문제 https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 풀이 소수를 판별하는 방법에 대해 알면 쉽게 풀 수 있는 문제입니다. https://dev-mandos.tistory.com/91 [알고리즘] 간단한 소수 판별 알고리즘 (Swift) 소수 소수(Prime Number)는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수 입니다. 간단한 소수 판별 알고리즘 그렇다면 해당 수가 소수인지 아닌지 어떻게 판별할까요? 아주 간단한 방식 dev-mand..
[알고리즘] 에라토스테네스의 체 (Swift) 에라토스테네스의 체 에라토스테네스의 체 알고리즘은 고대 그리스 수학자인 에라토스테네스가 만들어낸 소수를 찾는 알고리즘 입니다. 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네스의 체' 라고 불린다고 하네요. 방법 예를 들어 1 ~ 100까지의 숫자 중 소수를 찾는다고 생각해 봅시다. 먼저, 1부터 100까지의 수를 쭉 써줍니다. 코드상으로는 101만큼의 크기인 Boolean Array를 true로 초기화를 해줬습니다. 표로 나타내보면, 이렇게 나타낼 수 있겠네요. 1은 소수가 될 수 없기에 제거해줍니다. 2를 제외한 2의 배수를 제거합니다. 3을 제외한 3의 배수를 제거합니다. 이제 다음 차례로는 4를 제외한 4의 배수를 제거해야겠죠? 하지만 4는 2의 배수이기 때문에, 이미 다 지워졌습니다. 다음..
[BOJ] 백준 1978 소수 찾기 (Swift) 문제 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 풀이 소수 판별 알고리즘을 사용해서 풀이할 수 있습니다. 소수 판별 알고리즘에 대해 모른다면 아래 포스팅에서 한 번 확인해보고 가셔도 좋을 것 같습니다. https://dev-mandos.tistory.com/91 [알고리즘] 간단한 소수 판별 알고리즘 (Swift) 소수 소수(Prime Number)는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수 입니다. 간단한 소수 판별 알고리즘 그렇다면 해당 수가 소수인지 아닌지 어떻게 판별할까요? 아주 간..
[알고리즘] 간단한 소수 판별 알고리즘 (Swift) 소수 소수(Prime Number)는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수 입니다. 간단한 소수 판별 알고리즘 그렇다면 해당 수가 소수인지 아닌지 어떻게 판별할까요? 아주 간단한 방식으로 소수인지 판별할 수 있습니다. 단순히 2부터 자기 자신의 수 - 1 까지의 수 중에서 나누었을 때, 나머지가 0이 되는 수가 하나라도 존재하면 소수가 아닙니다. 이 방식의 경우 시간 복잡도는 $O(n)$이 될 것입니다. 시간 복잡도를 줄일 수 있는 방법이 있을까요?? 개선된 소수 판별 알고리즘 X를 2로 나누었을 때, 나머지가 0이라면 2는 X의 약수입니다. 그렇다면 X는 절대로 소수가 될 수 없겠죠? X를 2로 나누었을 때, 몫 도 X의 약수 입니다. 이러한 성질을 이용해서 시간 복잡도를 줄일 수..

반응형