728x90
반응형

// C# 배열과 컬렉션
// 배열은 같은 데이터 타입의 변수를 여러 개 사용할 때 사용
// 배열은 크기를 변경할 수 없음
// 배열은 0부터 시작
// 배열은 인덱스를 사용하여 요소에 접근
// 배열은 for문을 사용하여 요소를 순회
// 배열은 foreach문을 사용하여 요소를 순회
// 배열은 배열 초기화식을 사용하여 요소를 초기화
// 배열은 배열 메서드를 사용하여 요소를 추가, 삭제, 복사
// 배열은 다차원 배열을 사용하여 2차원 이상의 배열을 생성
// 배열은 가변 배열을 사용하여 크기를 변경할 수 있는 배열을 생성
using System;
class ArraysAndCollections
{
public static void Arrays()
{
int[] numbers = new int[5]; // 5개의 요소를 가진 배열 생성
numbers[0] = 1; // 첫 번째 요소에 1 대입
numbers[1] = 2; // 두 번째 요소에 2 대입
numbers[2] = 3; // 세 번째 요소에 3 대입
numbers[3] = 4; // 네 번째 요소에 4 대입
numbers[4] = 5; // 다섯 번째 요소에 5 대입
for (int i = 0; i < numbers.Length; i++) // 배열의 길이만큼 반복
{
Console.WriteLine(numbers[i]); // 배열 요소 출력
}
}
public static void CharacterStats()
{
// 플레이어의 공격력, 방어력, 체력, 스피드를 저장할 배열
int[] playerStats = new int[4];
// 능력치를 랜덤으로 생성하여 배열에 저장
Random rand = new Random();
for (int i = 0; i < playerStats.Length; i++)
{
playerStats[i] = rand.Next(1, 11);
}
// 능력치 출력
Console.WriteLine("플레이어의 공격력: " + playerStats[0]);
Console.WriteLine("플레이어의 방어력: " + playerStats[1]);
Console.WriteLine("플레이어의 체력: " + playerStats[2]);
Console.WriteLine("플레이어의 스피드: " + playerStats[3]);
}
public static void StudentsAverage()
{
int[] scores = new int[5]; // 5명의 학생 점수를 저장할 배열
for(int i = 0; i < scores.Length; i++) // 배열의 길이만큼 반복
{
Console.Write("학생" + (i + 1) + "의 성적을 입력하세요:"); // 학생의 성적 입력 요청
scores[i] = int.Parse(Console.ReadLine()); // 학생의 성적을 입력받아 배열에 저장
}
int sum = 0; // 합계를 저장할 변수
for(int i = 0; i < scores.Length; i++) // 배열의 길이만큼 반복
{
sum += scores[i]; // 학생의 성적을 합계에 더함
}
double average = (double)sum / scores.Length; // 평균을 계산
Console.WriteLine("학생들의 평균 점수는 " + average + "점입니다."); // 평균 출력
}
public static void GuessTheNumbers()
{
Random random = new Random(); // 랜덤 객체 생성
int[] numbers = new int[3]; // 3개의 숫자를 저장할 배열
// 3개의 랜덤 숫자 생성하여 배열에 저장
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = random.Next(1, 10);
}
int attempt = 0; // 시도 횟수 초기화
while (true)
{
Console.Write("3개의 숫자를 입력하세요 (1~9): ");
int[] guesses = new int[3]; // 사용자가 입력한 숫자를 저장할 배열
// 사용자가 입력한 숫자 배열에 저장
for (int i = 0; i < guesses.Length; i++)
{
guesses[i] = int.Parse(Console.ReadLine());
}
int correct = 0; // 맞춘 숫자의 개수 초기화
// 숫자 비교 및 맞춘 개수 계산
for (int i = 0; i < numbers.Length; i++)
{
for (int j = 0; j < guesses.Length; j++)
{
if (numbers[i] == guesses[j])
{
correct++;
break;
}
}
}
attempt++; // 시도 횟수 증가
Console.WriteLine("시도 #" + attempt + ": " + correct + "개의 숫자를 맞추셨습니다.");
// 모든 숫자를 맞춘 경우 게임 종료
if (correct == 3)
{
Console.WriteLine("축하합니다! 모든 숫자를 맞추셨습니다.");
break;
}
}
}
// 2차원 배열
// 2차원 배열은 행과 열로 이루어진 배열
// 2차원 배열은 배열의 배열로 구성
// 2차원 배열은 행과 열을 사용하여 요소에 접근
// 2차원 배열은 중첩된 for문을 사용하여 요소를 순회
// 2차원 배열은 foreach문을 사용하여 요소를 순회
// 2차원 배열은 배열 초기화식을 사용하여 요소를 초기화
// 2차원 배열은 가변 배열을 사용하여 크기를 변경할 수 있는 배열을 생성
// 2차원 배열을 사용하여 맵을 구현 할 수 있음
public static void ArrayMap2D()
{
int[,] map = new int[5, 5] // 5x5 크기의 2차원 배열 생성
{
{1, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1}
};
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (map[i,j] == 1)
{
Console.Write("■");
}
else
{
Console.Write("□");
}
}
Console.WriteLine();
}
}
// 컬렉션(Collection)자료를 모아 놓은 데이터 구조를 의미
// 컬렉션은 배열과 달리 크기를 변경할 수 있음
// 컬렉션은 요소를 추가, 삭제, 검색, 정렬 등 다양한 기능을 제공
// 컬렉션은 제네릭(Generic)을 사용하여 데이터 타입을 지정
// 컬렉션은 List, Dictionary, Queue, Stack, HashSet, LinkedList 등 다양한 종류가 있음
// 컬렉션은 LINQ(Language Integrated Query)를 사용하여 데이터를 쿼리
// List
// List는 배열과 유사한 컬렉션
// List는 크기를 변경할 수 있는 배열
// List는 요소를 추가, 삭제, 검색, 정렬 등 다양한 기능을 제공
// List는 제네릭(Generic)을 사용하여 데이터 타입을 지정
// List는 List<T> 형태로 사용
// List는 요소를 추가할 때 Add 메서드 사용
// List는 요소를 삭제할 때 Remove 메서드 사용
// List는 요소를 순회할 때 for문, foreach문 사용
public static void WhatIsList()
{
List<int> list = new List<int>(); // int형 요소를 가진 List 생성
list.Add(1); // 요소 추가
list.Add(2); // 요소 추가
list.Add(3); // 요소 추가
list.Remove(2); // 요소 삭제
for(int i = 0; i < list.Count; i++) // List의 길이만큼 반복
{
Console.WriteLine(list[i]); // 요소 출력
}
foreach (int i in list) // List 순회
{
Console.WriteLine(i); // 요소 출력
}
}
// Dictionary
// Dictionary는 키와 값으로 이루어진 컬렉션
// Dictionary는 해시 테이블을 사용하여 데이터를 저장
// Dictionary는 제네릭(Generic)을 사용하여 데이터 타입을 지정
// Dictionary는 Dictionary<TKey, TValue> 형태로 사용
// Dictionary는 요소를 추가할 때 Add 메서드 사용
// Dictionary는 요소를 삭제할 때 Remove 메서드 사용
// Dictionary는 요소를 검색할 때 ContainsKey, ContainsValue 메서드 사용
// Dictionary는 요소를 순회할 때 foreach문 사용
public static void WhatIsDictionary()
{
Dictionary<string, int> dict = new Dictionary<string, int>(); // string과 int형 요소를 가진 Dictionary 생성
dict.Add("apple", 1); // 요소 추가
dict.Add("banana", 2); // 요소 추가
dict.Add("cherry", 3); // 요소 추가
dict.Remove("banana"); // 요소 삭제
foreach (KeyValuePair<string, int> pair in dict) // Dictionary 순회
{
Console.WriteLine(pair.Key + ": " + pair.Value); // 요소 출력
}
}
// Stack
// Stack은 후입선출(LIFO, Last In First Out) 구조
// Stack은 요소를 추가할 때 Push 메서드 사용
// Stack은 요소를 삭제할 때 Pop 메서드 사용
// Stack은 요소를 확인할 때 Peek 메서드 사용
// Stack은 요소를 순회할 때 foreach문 사용
public static void WhatIsStack()
{
Stack<int> stack = new Stack<int>(); // int형 요소를 가진 Stack 생성
stack.Push(1); // 요소 추가
stack.Push(2); // 요소 추가
stack.Push(3); // 요소 추가
stack.Pop(); // 요소 삭제
foreach (int i in stack) // Stack 순회
{
Console.WriteLine(i); // 요소 출력
}
}
// Queue
// Queue는 선입선출(FIFO, First In First Out) 구조
// Queue는 요소를 추가할 때 Enqueue 메서드 사용
// Queue는 요소를 삭제할 때 Dequeue 메서드 사용
// Queue는 요소를 확인할 때 Peek 메서드 사용
// Queue는 요소를 순회할 때 foreach문 사용
public static void WhatIsQueue()
{
Queue<int> queue = new Queue<int>(); // int형 요소를 가진 Queue 생성
queue.Enqueue(1); // 요소 추가
queue.Enqueue(2); // 요소 추가
queue.Enqueue(3); // 요소 추가
queue.Dequeue(); // 요소 삭제
foreach (int i in queue) // Queue 순회
{
Console.WriteLine(i); // 요소 출력
}
}
}728x90
반응형
'C#' 카테고리의 다른 글
| C# 클래스와 객체 (0) | 2025.02.13 |
|---|---|
| C# 메서드(Method)와 구조체(Structures) (0) | 2025.02.11 |
| C# 조건문과 반복문 (0) | 2025.02.10 |
| C# 문자열 처리 (0) | 2025.02.10 |
| C# 연산자는 무엇인가? (0) | 2025.02.09 |