백준 1002 : 터렛
백준 (C99)/기본수학 2단계 (完) 2022. 2. 2. 15:20

결과적으로 우리가 구해야 하는 것은 두 원의 위치관계를 구하는것이다. 두 원의 위치관계..는 구글링하면 나보다 더 상세하게 알려주고있다. #include #include #include int solve() { int x1, x2, y1, y2, r1, r2, cnt; scanf("%d %d %d %d %d %d", &x1, &y1, &r1, &x2, &y2, &r2); float distance = sqrt(pow(x1-x2, 2) + pow(y1-y2, 2)); if(distance == 0 && r1 == r2) cnt = -1; else if(abs(r1-r2) < distance && distance < r1+r2) cnt = 2; else if(r1+r2 == distance || abs(r1..

백준 3053 : 택시 기하학
백준 (C99)/기본수학 2단계 (完) 2022. 2. 2. 13:53

우선, 이 문제를 풀기 전에 택시 기하학에 대해서 더 알아보고 가자 그럼 원의 정의를 알아보자, 원은 중심으로부터 같은 거리 떨어진 점들의 집합이다 그렇다면 택시 기하학에서의 원은 어떤 모양일까? 유클리드 기하학처럼 우리가 아는 원의 모양이 나올까? 놀랍게도 그렇지 않다. 택시 기하학상에서의 원은 우리가 아는 마름모꼴의 모양으로 만들어진다. 이는 유클리드 기하학과 택시 기하학에서의 거리의 정의가 다르기 때문이다. 자료를 구하다 보니 택시 기하학상에서의 원의 방정식까지 같이 나오게 됐는데, 점 (x, y)가 택시 기하학상에서의 중심이 (a, b)인 원의 방정식을 만족하는 점이라면 택시 기하학상에서의 원의 방정식은 | x - a | + | y - b | = d 를 만족한다. 따라서 이를 기반으로 코드를 짜 ..

백준 4153 : 직각삼각형
백준 (C99)/기본수학 2단계 (完) 2022. 2. 2. 13:32

#include #include int solve() { int a = 1, b = 1, c = 1; while(a != 0 && b != 0 && c != 0) { scanf("%d %d %d", &a, &b, &c); if(a == 0 && b == 0 && c == 0) break; if(a >= b && a >= c) { if(pow(a, 2) == pow(b, 2) + pow(c, 2)) printf("right\n"); else printf("wrong\n"); } if(b > a && b > c) { if(pow(b, 2) == pow(a, 2) + pow(c, 2)) printf("right\n"); else printf("wrong\n"); } if(c > b && c > a) { if(..

백준 3009 : 네번째 점
백준 (C99)/기본수학 2단계 (完) 2022. 2. 1. 23:58

그냥 직사각형을 만들라고 했으면 좀 골때렸겠지만 축에 평행하기때문에 쉽게 해결할 수 있다 가령 점 3개가 각각 (3, 5), (5, 5), (5, 3) 이라고 해보자. 그렇다면 정답은 (3, 3)이 되어야 할 것이다 여기서 간단하게 생각해보면 숫자가 하나씩만 나온 x좌표와 y좌표가 정답이 된다는것이다. 따라서 이를 이용해서 코드를 짜 주면된다. 나는 좀 길게 짰는데, XOR을 사용하는것도 방법이다 #include int solve() { int axis[3][2]; for(int i=0;i

백준 1085 : 직사각형에서 탈출
백준 (C99)/기본수학 2단계 (完) 2022. 2. 1. 22:53

구역을 네가지로 나눠야 한다 1. x >= w && y >= h 2. x > w && y h 4. x < w && y < h 이중에서 4번의 경우를 다시 생각해봐야하는데, 사각형 내부에 점이 있다고 하더라도 그 안에서도 가까이 있는 변이 다를 수도 있으므로 4번에 경우를 만족하더라도 4-1. x

백준 9020 : 골드바흐의 추측
백준 (C99)/기본수학 2단계 (完) 2022. 2. 1. 22:11

이것 역시 기본 골자를 에라토스테네스의 체로 잡았다. 고민을 했던 부분은 for문 두개의 합이 N이 되는 것들을 찾은 다음, 그 두 수를 소수 판별하는 방법을 생각했으나 너무 오래걸릴거같다고 생각했다. 물론 시간복잡도까지 계산해본건 아니라 대충 그런 생각이 들어서 전에 있던 코드를 불러왔는데, 문제는 이건 단순히 소수를 구하는게 아니고 N이 되는 소수의 합을 찾아야 하는 거였다. 처음에는 단순히 하나하나 구해서 차가 가장 작은 것을 골라보려고 생각을 했으나, 막상 넣고 돌려보니 시간이 초과되었다. 지금 생각해보면 당연히 시간 오바가 날거같긴 했는데, 따라서 에라토스테네스의 체를 사용하더라도 '골드바흐 파티션이 여러가지인 경우 두 소수의 차이가 가장 작은 것을 출력한다' 라는 조건을 만족하면서 시간안에 해..