별의 공부 블로그 🧑🏻‍💻

🗒️ 2020/12 (19)

728x90
  1. 2020.12.31 [Project Euler #16][C++] $2^{1000}$ 의 각 자릿수를 모두 더하면?

    문제16 : $2^{1000}$ 의 각 자릿수를 모두 더하면? 문제 $2^{15} = 32768$ 의 각 자릿수를 더하면 3 + 2 + 7 + 6 + 8 = 26 입니다. $2^{1000}$ 의 각 자릿수를 모두 더하면 얼마입니까? 문제 해결 방법 2^{1000}21000 은 너무나 큰 수이기에 C++ 의 정수형 변수에 대입할 수 없다. 그래서 string 자료형을 이용하여 문제를 해결하였다.내용 참고 : click참고char형 숫자 -> int형 숫자 : char형 숫자 - '0'int형 숫자 -> char형 숫자 : int형 숫자 + '0' 소스 코드 정답 1366 심화 공부 숫자의 거듭제곱 계산(Computing Powers of a Number) x를 nn번 곱한 수를 x^nxn이라 한다. 현재의..

  2. 2020.12.28 프로그램 실행 시간 측정 방법 (clock())

    12345678910#include // clock() : ms 단위로 시간 측정 void main() { clock_t start = clock(); // algorithm clock_t end = clock(); std::cout

  3. 2020.12.28 코딩할 때 도움이 될만한 내용들 (C++)

    Here are some things that may help you improve your code. Don't use std::endl if you don't really need it The difference betweeen std::endl and '\n' is that '\n' just emits a newline character, while std::endl actually flushes the stream. This can be time-consuming in a program with a lot of I/O and is rarely actually needed. It's best to only use std::endl when you have some good reason to flus..

  4. 2020.12.28 0부터 N까지 피보나치 수열 나열하기

    입력을 받으면, 입력한 수까지 피보나치 수열을 나열하는 프로그램 for 문/while 문/do while 문으로 간단하게 구현함.(+ 재귀 함수/ goto 문 이용하기) 시간 복잡도 : O(n) 200 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765

  5. 2020.12.28 [Project Euler #15][C++] 20×20 격자의 좌상단에서 우하단으로 가는 경로의 수

    문제15 : 20×20 격자의 좌상단에서 우하단으로 가는 경로의 수 문제 아래와 같은 2 × 2 격자의 왼쪽 위 모서리에서 출발하여 오른쪽 아래 모서리까지 도달하는 길은 모두 6가지가 있습니다 (거슬러 가지는 않기로 합니다). 그러면 20 × 20 격자에는 모두 몇 개의 경로가 있습니까? 문제 해결 방법 격자에서 최단 경로의 수 를 찾는 문제이다.규칙성을 찾아 문제를 해결하였다.배열 ary[20][20]에서 ary[n][n] = ary[n - 1][n] + ary[n][n - 1]이다.for 문을 사용하여 ary[x][0]과 ary[0][x]의 값을 모두 1로 설정하였다.그리고 또 다른 for 문을 사용하여 찾은 규칙성을 바탕으로 배열에 값을 채워서 최종적으로 ary[SIZE][SIZE]에 있는 값이 출..

  6. 2020.12.28 [Project Euler #14][C++] 백만 이하로 시작하는 우박수 중 가장 긴 과정을 거치는 것은?

    문제14 : 백만 이하로 시작하는 우박수 중 가장 긴 과정을 거치는 것은? 문제 양의 정수 n에 대하여, 다음과 같은 계산 과정을 반복하기로 합니다.n → n / 2 (n이 짝수일 때) n → 3n + 1 (n이 홀수일 때) 13에 대하여 위의 규칙을 적용해보면 아래처럼 10번의 과정을 통해 1이 됩니다. 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 아직 증명은 되지 않았지만, 이런 과정을 거치면 어떤 수로 시작해도 마지막에는 1로 끝나리라 생각됩니다.(역주: 이것은 콜라츠 추측(Collatz Conjecture)이라고 하며, 이런 수들을 우박수(Hailstone Sequence)라 부르기도 합니다)그러면, 백만(1,000,000) 이하의 수로 시작했을 때 1까지 도달하는..

  7. 2020.12.27 [MinGW] gcc/g++ 업데이트 방법 (for Windows) 2

    [MinGW] gcc/g++ 업데이트 방법 (for Windows) 본인의 컴퓨터에 MinGW GCC(G++) 컴파일러가 설치되어 있다면 다음과 같이 업데이트를 실행시킬 수 있다. 터미널에 다음을 입력한다. 1. 패키지 리스트 업데이트 PS > mingw-get update Updating catalogue: package-list.xml; (item 1 of 1) Checking catalogue: mingw32-package-list.xml; (item 2 of 4) Checking catalogue: mingw32-autoconf.xml; (item 3 of 38) Checking catalogue: mingw32-automake.xml; (item 4 of 38) Checking catalogue..

  8. 2020.12.27 [Project Euler #13][C++] 50자리 수 100개를 더한 값의 첫 10자리 구하기

    문제13 : 50자리 수 100개를 더한 값의 첫 10자리 구하기 문제 아래에 50자리 수가 100개 있습니다. 이것을 모두 더한 값의 첫 10자리는 얼마입니까?37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 91942213363574161572522430563301811072406154908250 23067588207539346171171980310421047513778063246676 89261670696623633820136378418383684178734361726757 28..

  9. 2020.12.26 [Project Euler #12][C++] 500개 이상의 약수를 갖는 가장 작은 삼각수는?

    문제12 : 500개 이상의 약수를 갖는 가장 작은 삼각수는? 문제 1부터 n까지의 자연수를 차례로 더하여 구해진 값을 삼각수라고 합니다. 예를 들어 7번째 삼각수는 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28이 됩니다. 이런 식으로 삼각수를 구해 나가면 다음과 같습니다. 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... 이 삼각수들의 약수를 구해 봅시다. 1: 1 3: 1, 3 6: 1, 2, 3, 6 10: 1, 2, 5, 10 15: 1, 3, 5, 15 21: 1, 3, 7, 21 28: 1, 2, 4, 7, 14, 28 위에서 보듯이, 5개 이상의 약수를 갖는 첫번째 삼각수는 28입니다.그러면 500개 이상의 약수를 갖는 가장 작은 삼각수는 얼마입니까? 문제 해..

  10. 2020.12.26 숫자 N의 약수의 개수 구하기

    *숫자 N의 약수의 개수 구하기 1부터 N까지 for문을 돌리면서 나누어 떨어지는 수가 있으면(i % N == 0) 카운트를 증가시켜(count++) 최종적으로 카운터를 출력하면 끝. 123456789101112131415161718#include using namespace std; int checkCommonDivisor(int n) { int count = 0; for (register int i = 1; i

  11. 2020.12.26 단축 평가 논리 계산법(Short-Circuit Evaluation)

    *단축 평가 논리 계산법(Short-Circuit Evaluation) AND 혹은 OR의 연산에 있어서 결과가 확실하게 예측이 되었을 때 뒤에 나머지 연산을 실행하지 않고 답을 내버리는 것AND 연산의 경우false가 우선 나와버리면 AND 뒤에 나오는 연산은 생략OR 연산의 경우true가 우선 나와버리면 OR 뒤에 나오는 연산은 생략#include using namespace std; int main() { bool result; // AND result = printf("") && printf("ABC"); result = printf("1") && printf("ABC"); cout

  12. 2020.12.26 [Project Euler #11][C++] 20×20 격자에서 연속된 네 수의 곱 중 최댓값

    문제11 : 20×20 격자에서 연속된 네 수의 곱 중 최댓값 문제 아래와 같은 20×20 격자가 있습니다.08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78..

  13. 2020.12.24 [Project Euler #10][C++]이백만 이하 소수의 합

    문제10 : 이백만 이하 소수의 합 문제 10 이하의 소수를 모두 더하면 2 + 3 + 5 + 7 = 17 이 됩니다. 이백만(2,000,000) 이하 소수의 합은 얼마입니까? 문제 해결 방법 하나하나씩 계산하는 방식(브루트 포스 방식)으로 문제를 해결하였다. (에라토스네스 체 알고리즘 사용)정답을 구하는데 약 20분 이 걸렸다. (...)for 문을 사용하여 문제를 해결하였다.2부터 N(2000000)까지 순회를 하며 소수를 찾으면 sum 변수에 대입하고 더하는 과정을 반복하였다.최종적으로 sum 변수에 할당된 값을 출력하도록 하였다. 소스 코드 1234567891011121314151617181920212223242526272829#include using namespace std; #define N..

  14. 2020.12.23 [Project Euler #9][C++] a + b + c = 1000 이 되는 피타고라스 수

    문제9: a + b + c = 1000 이 되는 피타고라스 수 문제 세 자연수 a, b, c 가 피타고라스 정리 a² + b² = c² 를 만족하면 피타고라스 수라고 부릅니다 (여기서 a < b < c).예를 들면 3² + 4² = 9 + 16 = 25 = 5²이므로 3, 4, 5는 피타고라스 수입니다. a + b + c = 1000 인 피타고라스 수 a, b, c는 한 가지 뿐입니다. 이 때, a × b × c 는 얼마입니까? 문제 해결 방법 하나하나씩 계산하는 방식(브루트 포스 방식)으로 문제를 해결하였다.3중 for문을 사용하여1부터 N(1000)까지 순회를 하며 다음의 조건을 만족시켰을 때의 a, b, c 값의 곱을 ans 변수에 할당하였다.a < b < c(a * a) + (b * b) == (..

  15. 2020.12.22 [Project Euler #8][C++] 1000자리 수 안에서 이어지는 5개 숫자의 곱 중 최댓값은?

    문제8: 1000자리 수 안에서 이어지는 5개 숫자의 곱 중 최댓값은? 문제 다음은 연속된 1000자리 수입니다 (읽기 좋게 50자리씩 잘라 놓음). 73167176531330624919225119674426574742355349194934969835203127745063262395783180169848018694788518438586156078911294949545950173795833195285320880551112540698747158523863050715693290963295227443043557668966489504452445231617318564030987111217223831136222989342338030813533627661428280644448664523874930358907296290..

  16. 2020.12.22 [Project Euler #7][C++] 10001번째의 소수

    문제7: 10001번째의 소수 문제 소수를 크기 순으로 나열하면 2, 3, 5, 7, 11, 13, ... 과 같이 됩니다. 이 때 10,001번째의 소수를 구하세요. 문제 해결 방법 하나하나씩 계산하는 방식(브루트 포스 방식)으로 문제를 해결하였다.2중 for문을 사용하여1부터 N까지 순회를 하면서 소수의 조건(나머지가 1과 그 자신인 수) 을 만족시키는 수가 발견될 경우 count의 값을 1씩 증가시켰다.count의 값이 NUM(10001)이 되었을 때의 값을 ans 변수에 할당하고, 2중 for문에서 빠져나오도록 하였다.NUM(10001)번째 소수가 담긴 ans 변수의 값을 출력하도록 하였다.연산을 빠르게 하도록 하기 위해 register 변수를 사용하여 for문을 순회하도록 하였다. 소스 코드 1..

  17. 2020.12.22 [Project Euler #6][C++] 1부터 100까지 "제곱의 합"과 "합의 제곱"의 차는?

    문제6: 1부터 100까지 "제곱의 합"과 "합의 제곱"의 차는? 문제 1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합). $1^{2} + 2^{2} + ... + 10^{2} = 385$ 1부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱). $(1 + 2 + ... + 10)^{2} = 55^{2} = 3025$ 따라서 1부터 10까지 자연수에 대해 "합의 제곱"과 "제곱의 합" 의 차이는 3025 - 385 = 2640 이 됩니다. 그러면 1부터 100까지 자연수에 대해 "합의 제곱"과 "제곱의 합"의 차이는 얼마입니까? 문제 해결 방법 하나하나씩 계산하는 방식(브루트 포스 방식)으로 문제를 해결하였다.for문을 사용하여자연수 1부터 N(100)..

  18. 2020.12.11 Eclipse와 MySQL 연동하기 (JSP)

    Eclipse와 MySQL 연동하기 (JSP) ■ MySQL Connector/J 다운로드 받기 - 다운로드 링크 : https://dev.mysql.com/downloads/connector/j- Select Operation System : Platform Independent- ZIP 또는 TAR 파일 다운로드 후, 압축 해제 ■ Eclipse에서 JDBC Package 추가하기 - Project 클릭 후 마우스 우클릭 -> Properties- 좌측의 [Java Build Path] 탭 -> [Libraries] 탭 -> [Add External JARs...] 버튼 클릭- 다운로드 받은 mysql-connector-java-8.0.22.jar 선택- [Package Explorer] -> [프로..

  19. 2020.12.01 [MySQL] 커서(Cursor) 예제

    #. 커서(Cursor) - 프로시저 내부에서 복수 행을 처리할 때 사용하는 구성 요소 - 파일 포인터가 열린 파일에서의 현재 위치를 표시하는 것처럼, 커서는 결과 집합에서 현재 위치를 표시 - 쿼리의 행 집합에서 한 행씩 옮겨가며 명령을 처리함. - OPEN, FETCH, CLOSE 문을 사용하여 커서를 제어 - 커서의 작동 순서 ① 커서 선언(DECLARE) ② 반복 조건 선언(DECLARE, HANDLER) ③ 커서 열기(OPEN) ④ 커서에서 데이터 가져오기(FETCH) ⑤ 데이터 처리 ⑥ 커서 닫기(CLOSE) #. 실습 1. 테이블 확인 mysql> SELECT * FROM EMP; +-------+--------+-----------+------+------------+---------+--..

728x90


📖 Contents 📖