본문 바로가기

반응형

백준

(329)
[BOJ] 백준 1002 터렛 (Swift) 문제 https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 풀이 조규현의 좌표에서 류재명과의 거리가 주어졌을 때, 류재명이 있을 수 있는 좌표는 어디일까요? 류재명은 이 보라색 테두리에 모두 위치해(무한대) 있을 수 있습니다. 그렇다면 조규현과 백승환의 좌표가 모두 주어진 경우를 확인해 봅시다. 이러한 경우에는 류재명이 2군데로 체크된 곳에 위치해 있을 수 있습니다. 아하 그렇다면 두 원이 서로 다른 두 점에서 만난다면? 류재명이 있을 수 있는 좌표는 2개가 되겠군요. 류재명이 있을 수 있는 좌표가 1..
[BOJ] 백준 2477 참외밭 (Swift) 문제 https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net 풀이 생각보다 어려웠던 문제입니다.. 단순히 큰 사각형에서 작은 사각형을 빼주면 답이 되는데, 작은 사각형의 넓이를 구하는것이 까다로웠습니다. 예시를 한번 그려서 살펴봅시다. 먼저 큰 사각형은 방향이 1번 등장한 것이 큰 사각형을 이루는 변이 됩니다. 4방향과 2방향이 되겠죠?? 그 뒤에 빨간색으로 쓴 (1, 60)과 (3, 20)이 작은 사각형의 넓이가 될 것입니다. 작은 사각형이 될것인..
[BOJ] 백준 3009 네 번째 점 (Swift) 문제 https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net 풀이 직사각형이 되려면 동일한 x좌표가 2개씩이고 y좌표도 2개여야 합니다. 따라서 4번째 점은 x좌표는 3개의 좌표에서 x좌표가 1번 등장한 것의 x 좌표이고, y좌표는 3개의 좌표에서 y좌표가 1번 등장한 y 좌표입니다. 여러 방법이 있겠지만 저는 Dictionary를 사용해서, x좌표와 y좌표가 몇 번 등장했는지 count 해주고, 1번 등장한 좌표를 출력해주었습니다. 소스코드 후기 쉽게 풀 수 있는 문제입니다. 입출력을 보면 힌트를 얻을 수 있습니다. x좌표와 y좌..
[BOJ] 백준 1085 직사각형에서 탈출 (Swift) 문제 https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 풀이 음.. 이런 문제는 직접 그려보면 이해가 빠릅니다. (6, 2) 에서 직사각형의 경계선까지 가는 거리는 상(1), 하(2), 좌(6), 우(4) 1이 최솟값입니다. 이는 상(h - y), 하(y), 좌(x), 우(w - x) 이렇게 나타낼 수 있겠네요. 이 중 가장 작은 값을 출력해주면 됩니다! 소스코드 후기 쉬운 문제이지만 이해가 잘 안간다면 직접 그려보면 쉽게 이..
[BOJ] 백준 17103 골드바흐 파티션 (Swift) 문제 https://www.acmicpc.net/problem/17103 17103번: 골드바흐 파티션 첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 < N ≤ 1,000,000을 만족한다. www.acmicpc.net 풀이 짝수 n을 두 소수의 합으로 나타낼 수 있는 경우의 수를 구해야하는 문제입니다. 또한 순서만 다른 것은 제외해야합니다. (3 + 7, 7 + 3) 그렇다면 먼저 소수인 수들을 구해주어야겠죠? n이 최대 1,000,000 입니다. 1,000,000 이하의 소수들을 전부 구해줍시다. 그리고 이 소수들의 합으로 n을 나타낼 수 있다면 하나씩 세어주면 되지 않을까요? ...아닙니다... 1,00..
[BOJ] 백준 4948 베르트랑 공준 (Swift) 문제 https://www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 풀이 n보다 크고 2 * n 보다 작거나 같은 소수의 개수를 출력하는 문제입니다. 에라토스테네스의 체 알고리즘을 사용하여 소수들을 구할 수 있습니다. n이 최대 123,456 이므로, 에라토스테네스의 체 알고리즘을 사용하여 123,456 * 2 만큼의 소수들을 한 번에 구해줍시다. 그 이후, n + 1 부터 2 * n 까지의 소수들의 개수를 출력해주면 됩니다. 고차함수 filter를 ..
[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-mando..
[BOJ] 백준 4134 다음 소수 (Swift) 문제 https://www.acmicpc.net/problem/4134 4134번: 다음 소수 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. www.acmicpc.net 풀이 n을 입력받은 후, n보다 크거나 같은 소수 중 가작 작은 소수를 출력해야합니다. 2부터 n - 1까지 나누어보고 나누어 떨어진다면 소수가 아니라고 판별할 수 있습니다. 이 방식은 $O(n)$의 시간 복잡도가 소요됩니다. 2부터 $\sqrt{n}$ 까지만 나누어 떨어지는지 확인해도 동일한 결과입니다. 이 방식은 $O(\sqrt{n})$의 시간 복잡도가 소요됩니다. 아래 포스팅에 정리를 해두었습니다. https://dev-mandos.tistory.com/91 [알고리즘..

반응형