-
2020.10.26
[Project Euler #3][C++] 가장 큰 소인수 구하기
문제3: 가장 큰 소인수 구하기 문제 어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다.예를 들면 13195의 소인수는 5, 7, 13, 29 입니다. 600851475143의 소인수 중에서 가장 큰 수를 구하세요. 문제 해결 방법 소인수 분해 알고리즘 을 이용하여 문제를 해결하였다.어떤 수 num를 소인수 분해 하려면 num를 2부터 차례대로 num의 제곱근까지의 숫자로 나누어 떨어지는지 검사하면 된다.플로우 차트를 기반으로 문제를 해결하여도 되지만, 코드가 길어지기 때문에 while 문을 사용하여 문제를 해결하였다. 소스 코드 1234567891011121314151617181920#include using namespace std; long long..
-
2020.10.25
6. 적분법(Integration)
*6. 적분법(Integration) 적분은 미분의 역산으로 연속확률변수에 대한 확률을 계산할 때 사용한다. 또한 연속확률변수의 확률밀도함수를 적분하여 분포함수를 얻으므로 적분의 개념은 확률에서 매우 중요하다. 1. 부정적분(Indefinite Integral)- 연속함수 $f(x)$ 가 주어졌을 때, 이 함수를 도함수로 가지는 함수 $F(x)$가 존재하면, 함수 $F(x)$ 를 $f(x)$ 의 부정적분(Indefinite Integral) 또는 원시함수(Primitive Function) 라 한다. - 따라서 두 함수 사이에는 다음 관계가 성립한다. $$F'(x) = f(x)$$ - 이 때, $F(x)$ 를 다음과 같이 나타내며, 기호 $\int$ 를 적분 기호(Symbol of Integral), $..
-
2020.10.25
scanf() 입력 버퍼 비우는 방법
*scanf() 입력 버퍼 비우는 방법 scanf()를 사용하다 보면, 입력을 정상적으로 받지 못할 경우가 생기게 된다.이러한 종류의 문제는 입력 버퍼(stdin Buffer)와 관련된 문제가 대부분이며, 이 문제를 해결하기 위해서는 입력 버퍼를 비워줘야 한다.입력 버퍼를 비우는 방법을 이 글에 총정리 해보았다. #pragma warning(disable: 4996) #include int main() { char ch; scanf("%c", &ch); printf("1, %c\n", ch); scanf("%c", &ch); printf("2, %c\n", ch); return 0; } a 1, a 2, ab 1, a 2, b 무슨 일이 일어났는지 확인해 보기 위하여 다음과 같이 코드를 수정해서 프로그램..
-
2020.10.24
[Project Euler #2][C++] 피보나치 수열에서 4백만 이하이면서 짝수인 항의 합
문제2 : 피보나치 수열에서 4백만 이하이면서 짝수인 항의 합 문제 피보나치(Fibonacci) 수열의 각 항은 바로 앞의 항 두 개를 더한 것입니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다. 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...4백만 이하의 짝수 값을 갖는 모든 피보나치 항을 더하면 얼마가 됩니까? 문제 해결 방법 문제의 조건을 잘 확인해야 한다.4백만 이하의 짝수 값 을 갖는 모든 피보나치 항을 더하라.즉, 피보나치 항의 값이 4백만 이하인 수 중에서 짝수 값을 갖는 모든 피보나치 항을 더하는 문제이다.나는 문제를 잘못 이해해서 연산을 4백만 번 수행 하는 작업을 반복하였고, 계속 오답 처리가 되어 멘탈이 붕괴되는 상황을 맞닥드리게 되었다.문제 번역자가 변..
-
2020.10.24
[Project Euler #1][C++] 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면?
문제1 : 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면? 문제 10보다 작은 자연수 중에서 3 또는 5의 배수는 3, 5, 6, 9 이고, 이것을 모두 더하면 23입니다. 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요? 문제 해결 방법 for 문을 사용하여 1이상 1000 미만의 범위에서 해당 수가 3 또는 5로 나누어질 경우, 그 값들의 축적합을 구하도록 프로그램을 구현하였다. 소스 코드 123456789101112131415161718#include using namespace std; #define MAX_NUM 1000 int main() { int sum = 0; for (int i = 1; i
-
2020.10.24
[BOJ1712][C++] 손익분기점
문제월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다. A, B, C가 주어졌을..
-
2020.10.24
[BOJ1193][C++] 분수 찾기
문제무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/11/21/31/41/5...2/12/22/32/4......3/13/23/3.........4/14/2............5/1.................................이와 같이 나열된 분수들을 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력첫째 줄에 분수를 출력한다. 예제 입력 1 14 예제 출력 1 2/4 출처· 문제를 만든 사람: author6· 문제의 오타를 찾은 사람: dead..
-
2020.10.17
데이터베이스 키(Database Keys)
*데이터베이스 키(Database Keys) ① 슈퍼 키(Super Key)- 한 릴레이션 내의 특정 튜플을 고유하게 식별하는 하나의 애트리뷰트 또는 애트리뷰트들의 집합- 튜플들을 고유하게 식별하는데 꼭 필요하지 않은 애트리뷰트들을 포함할 수 있음.- 유일성(Uniqueness)을 만족시키지만, 최소성(Minimality)은 만족시키지 못함. ② 후보 키(Candidate Key)- 각 튜플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임- 유일성과 최소성을 만족함.- 모든 릴레이션에는 최소 한 개 이상의 후보 키가 있음.- 후보 키도 두 개 이상의 복합 애트리뷰트로 이루어질 수 있음. ③ 기본 키(Primary Key)- 한 릴레이션에 후보 키가 두 개 이상 있으면 설계자(Database Designe..
-
2020.10.12
배열을 사용하지 않고 입력 받은 정수의 각 자리의 수 합하기
다음과 같이 입력 받은 정수 N의 각 자리의 수를 배열을 사용하지 않고 반복문을 사용하여 합할 수 있다. 1234567891011121314#include int main() { int N, sum = 0; scanf("%d", &N); for (int i = N; i != 0; i /= 10) { sum += (i % 10); } printf("정수 N의 각 자리수의 합 : %d", sum); return 0;} 1234515 원리는 다음과 같다. 입력 받은 정수 N을 0이 될 때까지 10으로 계속 나누어 준 후, 10으로 mod 연산을 수행하면 된다.그리고 나온 값들을 모두 더해주면 끝! [Step 1] 12345 12345 % 10 = 5 (다섯 번째 자리의 수) [Step 2] 12345 / 10..
-
2020.10.08
[Windows] 로그인 잠금화면 배경 이미지 얻는 방법
가끔 노트북을 열 때 마다 로그인 잠금화면에서 갖고 싶은 사진이 뜰 때가 있다.(윈도우에서 워낙 사람들의 이목을 끄는 멋진 사진들을 잘 선별해주기에...) 그래서 이 사진들을 다운 받을 수 있는 방법이 없을까 궁금하여 구글링을 해보다가 이 방법을 알게 되었다. 이 방법은 Windows 10 레드스톤 14393 이후 버전부터 가능하다. 1. 로그인 잠금화면 배경 이미지가 저장된 경로로 이동하기 로그인 잠금화면의 배경 화면은 다음의 경로에 위치한다. C:\Users\[User Name]\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets ※ 찾고자 하는 폴더가 보이지 않을 경우, 탐색기 폴..