로또볼펜 로또번호추출기 마킹펜 로또게임기
페이지 정보
작성자 Destiny 날짜24-11-08 11:00 조회6회 댓글0건본문
이번 로또번호알고리즘 포스팅부터 알고리즘 파트입니다. 제가 C언어 독학하면서 느낀건데 알고리즘이 가장 어려우면서도 가장 중요한 파트인 것 같습니다. 소스코드의 퀄리티를 결정짓는 파트같아요. 그리고 배열과 for문이 굉장히 중요한 기초개념임을 다시 한번 깨닫게 되었습니다 ㅎㅎ오늘은 가장 기초이지만 처리속도가 느려서 비효율적인 알고리즘 2개를 봅시다. ▶ 선택 정렬 (Selection Sort)- 배열을 선언했다 합시다. 숫자 무작위로 10개 나열했다고 하겠습니다. {2,7,1,10,8,6,9,3,5,4} 이렇게 나열을 했습니다.근데 우리는 이걸 순서대로 정렬을 로또번호알고리즘 하고 싶어요.이 때, 쓰는 개념이 '스와핑'입니다. 포인터를 배울 때 스왑함수를 배우셨던 분들도 있을거같은데 그거랑 똑같은 개념입니다. 어려운거 아니에요.코드 설명하겠습니다.먼저, int형 변수들을 선언했습니다. 그리고 배열을 선언해서 무작위로 숫자를 박아넣었습니다.배열 안의 인덱스들은 총 10개니까 첫번째 for문에서 10번의 반복이 일어나도록 하였습니다.그 다음 각 값들의 비교를 하기 위해 비교대상자 num의 값을 지정했습니다. 9999는 제가 임의로 한 것입니다.1~10까지만 있으니까 11해도 됩니다. 배열 안에 들어있는 로또번호알고리즘 값들보다 num의 값이 크기만 하면 됩니다. 그럼 if문을 봅시다. 결국 num>array[j]를 조건으로 내걸은건 절대적이죠. num>array[j]의 조건에 맞다면num Ϛrray[j]가 되도록 했습니다. 왜 이렇게할까요? 소스코드 다시 한번 읽어봅시다. 맨 처음에 저희가 num을 9999로 지정했습니다. 첫번째 for문에서 첫번째 비교를 시작할 때 num=9999이랑 array[j] (1~10 사이의 수) 가 주어지면 당연히 num이 무조건 크겠죠?그럼 비교당한 array[j]가 이제 num이 되는겁니다.그럼 이제 첫번째 for문에서 두번째 비교로 로또번호알고리즘 돌아갑니다. 이때는 앞에서 비교당했던 array[j](이제 num이 된)가 다음 array[j+1]보다 작으면 if 문을 실행 안할거고 크다면 if 문을 실행해서 다시 대체되고 그럴겁니다. 그런식으로 가면 총 55번의 반복을 실행하게 됩니다.10 ->9 ->8 ->..... ->2 ->1 = 55번의 시도.num의 역할은 이게 다에요. 이거 하나 때문에 있는겁니다. 그럼 이제 스와핑 함수를 봅시다. change부터 3줄의 코드를 스와핑 함수라 합니다.두번째 for문이 실행되서 우리가 원하는대로 순서정렬을 로또번호알고리즘 하려면 그걸 실행할 함수를 선언해야하겠죠?array[i]를 앞서 제일 위에서 선언한 정수형 함수 change에 넣습니다. 그리고 array[i]는 array[index]와 같음을, array[index]는 change와 같음을 보이고 있습니다.이거 어디서 본거 같지않나요? 여러분들이 삼성,현대,엘지,SK 인적성을 풀 때 항상 나오는 '명제와 대우 참,거짓'문제입니다. 소스 코드 3줄을 보세요. change ->array[i] ->array[index] ->change 이렇게 이어지네요. 마지막으로 출력을 위해 printf를 실행하면 아래와 같습니다.선택 정렬 전체 소스코드겉보기에는 생각보다 코드가 길지 않습니다. 로또번호알고리즘 다만, 이 소스코드는 컴퓨터가 처리하는데 있어 속도가 느려서 비효율적입니다.Q. 대체 뭐가 느리다는거에여? 그냥 넣고 돌려보니 뚝딱이던데?A. 그건 우리가 조또 간단한 프로그램을 넣으니까 별차이 없이 뚝딱인겁니다. 수억개의 데이터를 처리한다 생각해보세요. 지금은 우리가 10개의 데이터들로만 비교하며 정렬하니까 55번의 트라이면 끝납니다. 요샌 컴퓨터 성능이 하도 좋아서 55번정도야 밀리세컨드 단위로 처리가 가능하지만 수억개의 데이터를 처리한다면 가우스계산법에 따르면 이만큼 트라이를 해야합니다. 인터넷 켜도 로딩이 로또번호알고리즘 5초넘어가면 답답해 하는 한국인 특성상 우리는 빅데이터를 다룰 때 선택정렬 갈기면 부장님한테 혼납니다.프로그램의 퀄리티를 결정짓는 것은 가장 최적화된 알고리즘을 바탕으로 구현한 처리속도입니다.▶ 버블 정렬 (Bubble Sort)- 선택 정렬보다 더 짧은 코드지만, 효율은 더 그지같은 버블 정렬입니다.선택 정렬이랑 별 차이가 없습니다.다만 비교대상자가 사라졌습니다. 즉, 제가 선언한 배열 내의 숫자들끼리 직접 하나하나 비교해가면서 처리하는 프로그램인거죠. 비교대상자가 사라졌으니 오름차순으로 정렬하는데 있어 더 로또번호알고리즘 많은 트라이가 필요합니다.그 때문에 버블정렬은 선택 정렬보다 효율이 안좋은, 모든 알고리즘에서 가장 비효율적인 알고리즘입니다.다만 코드 자체는 매우 간단해서 저희가 로또 프로그램 뽑을 때, 6개의 숫자를 정렬할 때나 쓰죠.그럼 이 참에 로또 프로그램 다시 만들어서 보기 좋게 정렬까지 해봅시다.▶ 로또 번호 오름차순 정렬
댓글목록
등록된 댓글이 없습니다.