백준 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이 되는 소수의 합을 찾아야 하는 거였다. 처음에는 단순히 하나하나 구해서 차가 가장 작은 것을 골라보려고 생각을 했으나, 막상 넣고 돌려보니 시간이 초과되었다. 지금 생각해보면 당연히 시간 오바가 날거같긴 했는데, 따라서 에라토스테네스의 체를 사용하더라도 '골드바흐 파티션이 여러가지인 경우 두 소수의 차이가 가장 작은 것을 출력한다' 라는 조건을 만족하면서 시간안에 해..

백준 4948 : 베르트랑 공준
백준 (C99)/기본수학 2단계 (完) 2022. 2. 1. 18:34

오늘부턴 풀이도 같이 써보겠다. 우선, 소수를 구하는 방법은 이전 에라토스테네스의 체를 사용하겠습니다. https://namu.wiki/w/에라토스테네스의%20체 에라토스테네스의 체에 대한 문서입니다. 참고하시면 되겠습니다 간단하게 요약하자면, 2~N까지의 수를 놓습니다. 그리고 여기서 지워지지 않은 수 중 가장 작은 수는 소수입니다. 그리고 그 소수의 배수를 모두 지웁니다, 이 과정을 반복하면 결과적으로 소수만 남게됩니다. 이전 문제에서 에라토스테네스의 체를 구현하여 소수 구하는 방법을 써놨으니 그 코드를 이용하면 됩니다. 범위만 정해주면 되는 문제이기때문에 사실상 문제의 핵심은 '에라토스테네스의 체'의 구현입니다. #include int solve() { int M = 1, N, res[1000000..

백준 11653 : 소인수분해
백준 (C99)/기본수학 2단계 (完) 2022. 1. 31. 21:09

#include int solve() { int N, div = 2; scanf("%d", &N); if(N == 1) return 0; while(N != 1) { if(N % div == 0) { N /= div; printf("%d\n", div); }else div++; } } int main() { solve(); return 0; } 이번에도 쉬운 문제, div를 1씩 올려가면서 판별했다

백준 2581 : 소수
백준 (C99)/기본수학 2단계 (完) 2022. 1. 31. 21:00

#include int solve() { int M, N, cur, min = 10000, res = 0, check = 0, exist = 0; scanf("%d", &M); scanf("%d", &N); cur = M; while(cur