101. 큐를 이용한 프로그램
class Program
{
static void Main()
{
Random r = new Random();
Queue queue = new Queue();
for (int i = 0; i < 5; i++)
{
queue.Enqueue(r.Next(100) / 100.0f);
}
queue.Print();
for (int i = 0; i < 5; i++)
{
queue.Dequeue();
queue.Print();
}
}
}
결과
0.64 0.77 0.51 0.53 0.38
0.77 0.51 0.53 0.38
0.51 0.53 0.38
0.53 0.38
0.38
그냥 큐를 사용해보는 프로그램이다.
102. 컬렉션, ArrayList의 사용
using System;
using System.Collections;
namespace P102
{
class Program
{
static void Main(string[] args)
{
ArrayList a = new ArrayList();
Random r = new Random();
Print(a);
for (int i = 0; i < 10; i++)
{
a.Add(r.Next(100));
}
Print(a);
a.Sort();
Print(a);
a.RemoveAt(3);
Print(a);
}
private static void Print(ArrayList a)
{
foreach (int i in a)
{
Console.Write(i + " ");
}
Console.WriteLine();
}
}
}
결과
5 72 95 16 95 98 90 93 66 12
5 12 16 66 72 90 93 95 95 98
5 12 16 72 90 93 95 95 98
ArrayList 클래스를 사용하는 코드이다.
컬렉션이라는 개념이 나오는데, 같은 자료형의 데이터를 모아서 관리하는 자료구조라고 한다.
103. List<T> 컬렉션
using System;
using System.Collections.Generic;
namespace P103
{
class Program
{
static void Main(string[] args)
{
List<int> a = new List<int>();
Random r = new Random();
Print(a);
for (int i = 0; i< 10; i++)
{
a.Add(r.Next(100));
}
Print(a);
a.Sort();
Print(a);
a.RemoveAt(3);
Print(a);
}
private static void Print(List<int> a)
{
foreach (int i in a)
{
Console.Write(i + " ");
}
Console.WriteLine();
}
}
}
결과
11 74 74 17 16 41 20 16 48 17
11 16 16 17 17 20 41 48 74 74
11 16 16 17 20 41 48 74 74
List<>를 사용해보는 코드이다. 근데 ArrayList와 무슨 차이일까 싶은데
ArrayList는 object로 값을 저장하기에, 여러 값을 저장할 수 있다. 단점이라면, 형 변환이 필요해 수행시간이 좀 걸릴 것 같다.
104. List<T>와 배열의 정렬
using System;
using System.Collections.Generic;
namespace P104
{
class Program
{
static void Main(string[] args)
{
List<string> a = new List<string>();
String[] b = new string[3];
a.Add("C");
a.Add("B");
a.Add("A");
b[0] = "A";
b[1] = "C";
b[2] = "B";
a.Sort();
Array.Sort(b);
foreach (string value in a)
{
Console.Write(value + " ");
}
Console.WriteLine();
foreach (string value in b)
{
Console.Write(value + " ");
}
Console.WriteLine();
}
}
}
결과
A B C
A B C
List와 Array의 차이점을 알아보는 코드이다.
Array의 경우 따로 객체를 만드는 것이 아닌 자료형[]의 형태로 생성한다
Sort를 하는 방법의 차이점등 사소한 차이점도 보인다.
105. 배열을 내림차순으로 정렬하는 방법
using System;
using System.Collections;
namespace P105
{
class Program
{
public class ReverseComparer : IComparer
{
public int Compare(object x, object y)
{
string s1 = (string)x;
string s2 = (string)y;
return string.Compare(s2, s1);
}
}
static void Main(string[] args)
{
string[] animals = { "A", "B", "C", "D" };
string[] animals2 = { "가", "나", "다", "라" };
Print(animals);
Print(animals2);
Array.Sort(animals);
Array.Reverse(animals);
Array.Sort(animals2);
IComparer rev = new ReverseComparer();
Array.Sort(animals2, rev);
Print(animals);
Print(animals2);
}
private static void Print<T>(T[] values)
{
foreach (var v in values)
Console.Write($"{v} ");
Console.WriteLine();
}
}
}
결과
A B C D
가 나 다 라
D C B A
라 다 나 가
오름차순 정렬 후, 다시 역순 정렬로 내림 차순으로 만드는 코드이다.
106. 두 개의 배열을 쌍으로 정렬
using System;
using System.Collections;
namespace P106
{
public class ReverseComparer : IComparer
{
public int Compare(object x, object y)
{
string s1 = (string)x;
string s2 = (string)y;
return string.Compare(s2, s1);
}
}
class Program
{
static void Main(string[] args)
{
string[] EN = { "A", "B", "C", "D" };
string[] KR = { "가", "나", "다", "라" };
Print(KR, EN);
Array.Sort(EN, KR);
Print(KR, EN);
IComparer comparer = new ReverseComparer();
Array.Sort(KR, EN, comparer);
Print(KR, EN);
string[] T1 = { "a", "b", "c", "d" };
string[] T2 = { "t2", "t4", "t1", "t3" };
Print(T1, T2);
Array.Sort(T2, T1);
Print(T1, T2);
}
private static void Print<T>(T[] values1, T[] values2)
{
foreach (var v in values1)
Console.Write($"{v} ");
Console.WriteLine();
foreach (var v in values2)
Console.Write($"{v} ");
Console.WriteLine();
Console.WriteLine();
}
}
}
결과
가 나 다 라
A B C D
가 나 다 라
A B C D
라 다 나 가
D C B A
a b c d
t2 t4 t1 t3
c a d b
t1 t2 t3 t4
Array.Sort()메소드에 대한 코드이다.
정렬 방법에 관한 이야기인데, 2개의 정렬이 있을때, 그 정렬 규칙을 지키는 방법에 대해서 알려주는 코드이다.
아이템 창을 만들때 사용할 수 있을 것 같다.
107. IComparable 인터페이스를 이용한 객체의 정렬
using System;
using System.Collections;
using System.Collections.Generic;
namespace P107
{
class Artists : IComparable
{
public string Name { get; set; }
public string Country { get; set; }
public int Birth { get; set; }
public int Die { get; set; }
public Artists(string name, string country, int birth, int die)
{ Name = name; Country = country; Birth = birth; Die = die; }
public int CompareTo(object obj)
{
Artists a = (Artists)obj;
return this.Birth.CompareTo(a.Birth);
}
public override string ToString()
{
return string.Format($" {Name}, {Country}, {Birth}, {Die}");
}
}
class Program
{
static void Main(string[] args)
{
Artists[] artists =
{
new Artists("A", "a", 1452, 1519),
new Artists("B", "b", 1853, 1890),
new Artists("C", "C", 1840, 1926),
new Artists("D", "d", 1430, 1490),
new Artists("E", "e", 1460, 1520)
};
foreach (Artists value in artists)
{
Console.WriteLine(value.ToString());
}
Console.WriteLine();
List<Artists> artist15c = new List<Artists>();
foreach (Artists artist in artists)
{
if (artist.Birth > 1400 && artist.Birth < 1500)
artist15c.Add(artist);
}
artist15c.Sort();
foreach (Artists artist in artist15c)
{
Console.WriteLine(artist.ToString());
}
}
}
}
결과
A, a, 1452, 1519
B, b, 1853, 1890
C, C, 1840, 1926
D, d, 1430, 1490
E, e, 1460, 1520
D, d, 1430, 1490
A, a, 1452, 1519
E, e, 1460, 1520
여러가지 자료형이 섞인 배열에 특정 부분을 확인하여 따로 정열하는 코드이다.
108. Queue<T> 컬렉션의 사용 방법
class Program
{
static void Main(string[] args)
{
Queue<string> que = new Queue<string>();
que.Enqueue("T");
que.Enqueue("L");
que.Enqueue("Z");
que.Enqueue("C");
Print(que);
Console.WriteLine($"dequeue : {que.Dequeue();}");
Queue<string> que2 = new Queue<string>(que.ToArray());
Print(que2);
string[] arr = new string[que.Count];
que.CopyTo(arr, 0);
Queue<string> que3 = new Queue<string>(arr);
Print(que3);
}
private static void Print<T>(Queue<T> queue)
{
foreach (var value in queue)
{
Console.Write(value + " ");
}
Console.WriteLine();
}
}
결과
T L Z C
dequeue : T
L Z C
L Z C
컴퓨터에 콜렉션 - 제레닉이 using이 안된다... 온라인 컴파일러는 되는걸 보니까 vs에서 뭔가 설치가 안된 것 같다.
대충 Queue<T>에 값을 넣고 사용해보는 코드이다.
109. Stack<T>와 Polish 계산기
using System;
using System.Collections;
using System.Collections.Generic;
namespace P109
{
class Program
{
static void Main(string[] args)
{
string[] input = Console.ReadLine().Split();
foreach (var i in input)
{
Console.Write(i + " ");
}
Console.Write(" = ");
Stack<double> nStack = new Stack<double>();
foreach (var s in input)
{
if (isoperator(s))
{
switch (s)
{
case "+":
nStack.Push(nStack.Pop() + nStack.Pop()); break;
}
}
else
{
nStack.Push(double.Parse(s));
}
}
Console.WriteLine(nStack.Pop());
}
private static bool isoperator(string s)
{
if(s == "+" || s == "-")
return true;
else
return false;
}
}
}
결과
10.1 20.2
10.1 20.2 = 20.2
Stack<>을 사용해보는 코드이다.
polish 연산이라는것을 처음 봤는데, 전후위 연산자인 것 같다.
110. Hashtable과 Dictionary<TKey, TValue>
using System;
using System.Collections.Generic;
namespace P110
{
class Program
{
static void Main(string[] args)
{
Dictionary<string, string> colorTable = new Dictionary<string, string>();
colorTable.Add("Red", "빨강");
colorTable.Add("Green", "초록");
foreach (var value in colorTable)
Console.WriteLine($"colorTable [{value.Key}] = {value.Value}");
try
{
colorTable.Add("Red", "빨강");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine(colorTable["Red"]);
Console.WriteLine(colorTable["Green"]);
}
}
}
결과
colorTable [Red] = 빨강
colorTable [Green] = 초록
동일한 키를 사용하는 항목이 이미 추가되었습니다.
빨강
초록
나를 C#공부에 빠트린 원인 2, 딕셔너리이다.
기본적으로 key와 value를 가지고 있으며, key는 유일해야 한다.
'공부 > C#' 카테고리의 다른 글
스크립트에 변수가 많을 시 어떻게 정리할 것인가? - class 사용 정리 아이디어 정리 (0) | 2024.11.26 |
---|---|
C# 공부(12) 111~124(Part3 End && C# 언어 공부 End) (0) | 2024.08.28 |
C# 공부(10) 93~100 (0) | 2024.08.27 |
C# 공부(10) 91~92(Part2 End) (0) | 2024.08.26 |
C# 공부(9) 81~90 (0) | 2024.08.26 |