선형 자료구조 1(배열)
본문 바로가기
  • 게임 개발자가 되고싶은 구구
게임 개발 공부/자료구조

선형 자료구조 1(배열)

by gugu99 2021. 12. 16.
반응형

안녕하세요!

 

오늘도 게임개발자가 되기위해 공부하고 있는 구구입니다.

오늘부터는 자료구조에 대해서도 병행하면서 공부하려고 하는데 자료구조의 시작인

선형자료구조부터 공부를 시작하려 합니다.

 


  • 배열

- 많은 데이터를 관리하기 위해 사용하는 것

- 비슷한 성질의 데이터를 그룹화 하여 관리

 

 

  • 배열의 선언 방법

string[] book = new string[100];

 

 

  • 배열의 특징

- 구조가 간단

- index가 있어서 접근이 가능함

- 범위 밖의 index는 처리가 안됨(index out of range)

- 요소의 삭제/추가를 통한 배열의 크기 재조정이 어려움.

 


  • 배열 예제

1. 로또 번호 6자리를 뽑아보기

2. 번호는 1번부터 45번까지 있음

3. 번호는 서로 중복이 안됨

 

출력 예시

 

C#-로또-6자리-랜덤-random-중복제외

 


우선 무작위 숫자를 출력해야 하므로 random을 써야할것 같다는 생각이 바로들었습니다.

또한 로또는 6자리이므로 배열은 6자리일 것이고 중복이 안되야 하기 때문에 중복과 관련된 함수도 필요할 것 같습니다.

그리고 출력하는 함수도 만들면 좋을것 같습니다.

 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _01_MyLotto
{
    class Lotto
    {
        private int[] LottoGuess = new int[6];

        public Lotto()
        {
            for(int i = 0; i < LottoGuess.Length; i++)
            {
                while (true)
                {
                    Random random = new Random();
                    int a = random.Next(1, 46);
                    if (CheckNum(a, LottoGuess))
                    {
                        LottoGuess[i] = a;
                        break;
                    }
                }

            }
        }

        public void ShowNumber()
        {
            Console.WriteLine("== 로또 번호 공개 ==");
            foreach(int i in LottoGuess)
            {
                Console.Write("{0} ", i);
            }
            Console.WriteLine();
        }

        private bool CheckNum(int _a, int[] _LottoGuess) // 중복이 없을 경우 true 중복이 있다면 false 반환
        {
            for(int i = 0; i < LottoGuess.Length; i++)
            {
                if (_LottoGuess[i] == _a)
                {
                    return false;
                }

            }
            return true;
        }
    }




    internal class Program
    {
        static void Main(string[] args)
        {
            Lotto LottoNumber = new Lotto();
            LottoNumber.ShowNumber();
        }
    }
}

 

 


해당 문제는 제가 직접 푼 것이고 이것이 꼭 정답은 아니며 어떠한 방식이든 배열을 이용해서

중복되지 않는 6자리 숫자를 출력하는 것이 중요하다고 생각합니다.

 

 

 

 

 

 

오늘은 여기까지 하도록 하겠습니다.

반응형

댓글