Algorithm 170

[백준 알고리즘/BOJ/C++] 1002 터렛

류재명이 어디 있는지 찾고 싶다! 조규현과 백승환의 위치와, 두 명이 각각 류재명과 얼마나 떨어져 있는지 입력받는다 류재명이 있을 수 있는 위치의 수를 계산하는 문제다 모든 경우를 다 따져봐야 한다 현재 조규현/백승환의 위치에서 r1/r2 만큼 떨어진 모든 점에 류재명이 있을 수 있으므로 원으로 표현한다 두 원의 교점이 류재명이 위치가 된다!! 1) 조규현과 백승환이 똑같은 곳에 위치할 때 왼쪽 그림처럼 r1=r2 라면 류재명이 위치할 수 있는 곳은 무한대이다 = -1 오른쪽 그림처럼 위치는 똑같지만 거리가 다르다면 류재명이 위치할 수 없다 = 0 2) 외접할 때 (r1 + r2 = d) 조규현과 백승환의 거리를 d라고 하자 r1+r2 = d일 때, 류재명이 위치할 수 있는 곳은 빨간점 한 곳뿐이다 = ..

Algorithm/BOJ 2021.01.17

[백준 알고리즘/BOJ/C++] 3009 네 번째 점

세 점이 입력되면 축에 평행한 직사각형을 만들기 위한 나머지 한 점을 출력해야 한다 직사각형이 축에 평행하니까 x축, y축 숫자가 모두 짝이 맞아야 한다 짝이 맞지 않는 나머지 하나를 출력하면 된다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include using namespace std; int func(int a, int b, int c) { if (a == b) return c; else if (a == c) return b; return a; } int main(void) { ios_base::sync_with_stdio(false); cin.tie(NULL); int x1, x2, x3, y1, y2, y3; cin >> x1 >> y1 >> x2 ..

Algorithm/BOJ 2021.01.17

[백준 알고리즘/BOJ/C++] 골드바흐의 추측

2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있는데 이런 수를 골드바흐의 수라고 한다 4 = 2 + 2 6 = 3 + 3 8 = 3 + 5 10 = 5 + 5 12 = 5 + 7 이런 식으로 짝수를 두 소수의 합으로 나타내는 표현은 골드바흐의 파티션이라고 하는데, 정수 n이 입력됐을 때 n의 파티션을 출력해야 한다 문제는 두 소수의 차이가 최대한 나지 않아야 한다 두 수가 n/2에 최대한 가까워야 한다는 뜻이다 따라서 절반으로 쪼개버리면 된다 1) 쪼개고 2) 소수인지 확인하고 3) 양쪽에 -1/+1 해주고 4) 소수인지 확인하고 5) 3, 4 반복 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31..

Algorithm/BOJ 2021.01.17

[백준 알고리즘/BOJ/C++] 1929 소수 구하기

에라토스테네스의 체..로 소수를 구해보는 문제 보통 소수를 구할땐 2부터 자기자신에서 1을 뺀 수까지 나눠보면서 찾았다 이 방법보다 더 빠르게 소수를 구할 수 있는 방법이 에라토스테네스가 고안한 방법 에라어쩌구다 에라토스테네스의 체는 2부터 루트 n보다 작은 수의 배수를 모조리 지워 소수를 찾는 방법이다 (자기자신은 제외) 장난없게 열심히 그렸다 배수를 계속 소거하면 위와같이 소수만 남게 된다! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include using namespace std; int arr[1000000]; int main(void) { ios_base::sync_with_stdio(fal..

Algorithm/BOJ 2021.01.17