본문 바로가기
반응형

알고리즘 문제 & 프로그래밍/C++30

[C++] 로또 번호 생성 프로그램 제작기 #4 (로또 번호 생성 프로그램 파일 포함) 마지막 메뉴인 역대 로또 당첨 번호를 기반으로 로또 번호를 생성하는 파트이다. 사실 역대 로또 당첨 번호가 실제 로또 번호 당첨 확률에는 전혀 영향을 미치지 않지만, 이상하게도 사람들은 알면서도 과거의 영향을 주지 않는 요소들에 의존하곤 한다. 그래서 일단 만들어는 보았다. 작성일 기준 948회차까지 로또 번호 추첨이 진행되었는데, 1 ~ 45 번호 중에서 어떤 것이 몇번 나왔는지는 로또 홈페이지에서 확인할 수 있다. dhlottery.co.kr/gameResult.do?method=statByNumber#none 로또6/45 당첨통계 - 번호별 통계 * 로또6/45의 당첨번호는 (주)동행복권 공식홈페이지, ARS전화 등을 통해 확인하실 수 있습니다. dhlottery.co.kr 1번에서 45번까지 각 .. 2021. 1. 31.
[C++] 로또 번호 생성 프로그램 제작기 #3 이번에는 세 번째 메뉴인 생년월일과 연관된 번호를 생성하는 부분을 작성했다. 예를 들면 '19990904'이라는 입력을 받으면 1999년 9월 4일과 연관된 번호를 생성하는 것이다. 두 부분으로 나누어보면 1. 생년월일을 입력받아 저장하는 부분 2. 생년월일 기반으로 로또 번호를 생성하는 부분 이 있겠다. 1. 생년월일을 입력받아 저장하는 부분 '19990904'라는 8자리 숫자를 쪼개어 각각 벡터에 저장할 것이다. 입력받는 부분은 러프하게 코드를 작성했는데, 1. 8자리만 입력 가능하도록 : AD 1000년 이전에 태어난 사람은 계산 불가, AD 9999년 이후에 태어난 사람도 계산 불가 2. 1월 ~ 12월 생만 가능 : 13월에 태어난 사람은 없겠지.. 3. 일은 일괄 1 ~ 31일 범위로 : 2월.. 2021. 1. 27.
[C++] 로또 번호 생성 프로그램 제작기 #2 이번에는 두 번째 메뉴인 사용자가 로또 번호를 1~ 5개 지정하면 나머지는 랜덤으로 생성하는 부분을 작성했다. 크게 두 부분으로 나눌 수 있는데, 1. 로또 번호 1 ~ 6개를 입력 받는 부분 2. 입력 받은 값을 제외한 나머지 부분을 랜덤하게 고르는 부분 으로 나눌 수 있다. 1. 로또 번호 1 ~ 6개를 입력 받는 부분 사용자가 로또 번호에 포함될 숫자를 1 ~ 6개 지정할 수 있도록 한다. getline, string, stringstream 을 이용하여 띄어쓰기를 구분자로 숫자를 입력받고, numVec 벡터에 저장한다. (사용자가 2 15 23을 입력하면, numVec에 2 / 15 / 23을 각각 저장한다.) (세부 프로세스는 아래 링크 참조) 2021/01/21 - [각종공부/C++ 오류 해결.. 2021. 1. 21.
[C++] 로또 번호 생성 프로그램 제작기 #1 C++로 여러 방법으로 로또 번호를 생성하는 프로그램을 만드는 과정을 적어보려 한다. 로또 번호 생성 방법으로 1. 랜덤으로 번호 6개 모두 생성하는 방법 2. 사용자가 번호를 1~ 5개 지정하면 나머지는 랜덤으로 생성하는 방법 3. 생년월일을 입력하면 이를 조합하여 번호를 생성하는 방법 4. 역대 1위 당첨번호 기반 생성하는 방법 총 4가지를 선정하였다. 다 만들 수 있을지는 모르겠지만 도전해본다. 먼저 1 ~ 45 사이의 숫자 중에서 랜덤으로 6개를 고르는 클래스(randomGenerator)를 만들었다. 1. #include 의 random_device를 이용하여 랜덤 숫자를 만든다. 2. 이를 45로 나눈 나머지를 구하면 0 ~ 44 사이의 숫자가 나오고, 이에 1을 더해준 값을 로또 번호로 채택.. 2021. 1. 19.
[C++]프로젝트 오일러 25번 문제&풀이 (피보나치 수열에서 처음으로 1000자리가 되는 항은 몇 번째?) 문제 25번 피보나치 수열은 아래와 같은 점화식으로 정의됩니다. Fn = Fn-1 + Fn-2 (단, F1 = 1, F2 = 1). 이에 따라 수열을 12번째 항까지 차례대로 계산하면 다음과 같습니다. F1 = 1 F2 = 1 F3 = 2 F4 = 3 F5 = 5 F6 = 8 F7 = 13 F8 = 21 F9 = 34 F10 = 55 F11 = 89 F12 = 144 수열의 값은 F12에서 처음으로 3자리가 됩니다. 피보나치 수열에서 값이 처음으로 1000자리가 되는 것은 몇번째 항입니까? 접근방법 1. 우선 numVec_1 벡터와 numVec_2 벡터에 1을 담고 이 두 벡터의 합이 numVec_3 벡터가 되도록 세팅한다. 2. 1000자리수까지 계산해야 하므로, numVec_3 벡터에 3자리씩 끊어서.. 2020. 12. 25.
[C++]프로젝트 오일러 24번 문제&풀이 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9로 만들 수 있는 1,000,000번째 사전식 순열은?) 문제 24번 어떤 대상을 순서에 따라 배열한 것을 순열이라고 합니다. 예를 들어 3124는 숫자 1, 2, 3, 4로 만들 수 있는 순열 중 하나입니다. 이렇게 만들 수 있는 모든 순열을 숫자나 문자 순으로 늘어놓은 것을 사전식(lexicographic) 순서라고 합니다. 0, 1, 2로 만들 수 있는 사전식 순열은 다음과 같습니다. 012 021 102 120 201 210 0, 1, 2, 3, 4, 5, 6, 7, 8, 9로 만들 수 있는 사전식 순열에서 1,000,000번째는 무엇입니까? 접근방법 1. 팩토리얼 함수를 정의한다.(0! = 1 // n! = n * (n-1) * ... * 1) 2. numVec에 0~9까지의 숫자를 담고, 1000000번째의 숫자를 계산해보자. 3. 먼저 첫번째 올 .. 2020. 12. 22.
반응형