백준 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..

`22. 01. 31. (월)
일기장 2022. 2. 1. 00:19

다가오는 휴가와 답없는 계획속에서 나는 오늘 뭘 했는가.. 코딩 몇문제 끄적이고 내 머리를 원망하며 하루를 보낸듯하다 문제 존나 쉬워보이는데 막상 풀면 진짜로 쉬운게 몇 없다는게 가장 웃김 휴가는 뭐 딱봐도 화요일 출타같은데, 이번에 마지막 휴가라서 이걸 뽕뽑으면서 놀고 와야하는지, 7월까지 얼굴 못보는 가족들 얼굴이나 더 보고 와야하는지 좀 갈팡질팡하다 뭐 어차피 엄청 놀고싶어도 집근처에 오미크론 폭증에다가 괜히 이상한곳 걸렸다가 동선 겹치면 골떼리는 상황이 오니 신나게 놀지도 못할 것 같고 그래도 요즘에 공부한답시고 좀 깝쳤던거같은데, 결과물이 생겨서 나름 만족중이다. 어제 골드 5 문제 풀고 정답이었을때 참 짜릿했는데 ㅋㅋ 또 어려운문제를 만나면 그러겠지 싶다 전역하기 전까지 골딱이는 찍어봐야겠다 :)

백준 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

백준 1978 : 소수 찾기
백준 (C99)/기본수학 2단계 (完) 2022. 1. 31. 20:34

#include int solve() { int num[100], cnt[100] = {0}, test, res = 0; scanf("%d", &test); for(int i=0;i