06/30 선형 알고리즘
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
선형 알고리즘과 비선형 알고리즘의 차이
선형 알고리즘은 데이터를 한 줄로 보고 순서대로 처리하는 방식이고,
비선형 알고리즘은 트리나 그래프처럼 여러 갈래로 연결된 데이터를 관계에 따라 처리하는 방식이다.
선형 알고리즘
데이터가 일렬로 나열된 구조에서 처음부터 끝까지 순차적으로 처리하는 알고리즘이다.
배열, 리스트, 스택, 큐 같은 선형 자료구조에서 자주 사용된다.
| 알고리즘 | 설명 |
|---|---|
| 선형 탐색 | 배열을 처음부터 끝까지 하나씩 확인 |
| 순차 출력 | 리스트의 모든 요소를 차례대로 출력 |
| 스택 처리 | 가장 위의 요소부터 순서대로 처리 |
| 큐 처리 | 먼저 들어온 요소부터 순서대로 처리 |
비선형 알고리즘
데이터가 일렬로 나열되지 않고 계층, 분기, 연결 관계를 가지는 구조에서 처리하는 알고리즘이다.
트리, 그래프 같은 비선형 자료구조에서 자주 사용된다.
| 알고리즘 | 설명 |
|---|---|
| DFS | 한 방향으로 깊게 탐색 |
| BFS | 가까운 노드부터 넓게 탐색 |
| 트리 순회 | 전위, 중위, 후위 순회 |
| 최단 경로 탐색 | 그래프에서 가장 짧은 경로 탐색 |
알고리즘 짤 때 종이나 그림판에 적어가면서 하는 것이 아주 좋음
-> ★슈도코드(의사코드)의 습관화
IEnumerable
스택, 큐 도 순회 가능
컬렉션을 foreach로 순회할 수 있게 해주는 가장 기본적인 인터페이스이다.
인덱스 접근이나 Add, Remove 같은 수정 기능은 제공하지 않고,
데이터를 하나씩 읽는 순회 용도로 사용된다.
List, Array, HashSet 등 다양한 컬렉션과 호환되기 때문에
단순히 읽기만 할 때 사용하면 메서드의 범용성이 높아진다.
IList
인덱스를 가진 목록 형태의 컬렉션을 나타내는 인터페이스이다.
foreach 순회뿐만 아니라 Count와 인덱스 접근을 이용한 for문 순회가 가능하며,
Add, Remove, Insert 같은 요소 수정 기능도 제공한다.
List 처럼 순서와 인덱스가 필요한 컬렉션을 다룰 때 사용한다.
확장 메서드는 기존 클래스의 코드를 직접 수정하지 않고도,
마치 그 클래스에 원래 있던 메서드처럼 사용할 수 있게 해주는 문법입니다.
예를 들어 string 클래스에 직접 코드를 추가할 수는 없지만, 확장 메서드를 만들면 이렇게 사용할 수 있습니다.
확장 메서드 예시
public static class StringExtension
{
public static string ToUpperFirst(this string str)
{
if (string.IsNullOrEmpty(str))
return str;
return char.ToUpper(str[0]) + str.Substring(1);
}
}
사용:
string text = "hello";
string result = text.ToUpperFirst();
Console.WriteLine(result); // Hello
확장메서드 조건
| 조건 | 설명 |
|---|---|
| static 클래스 안에 있어야 함 | 확장 메서드는 반드시 static class 내부에 선언해야 함 |
| static 메서드여야 함 | 메서드 자체도 반드시 static이어야 함 |
첫 번째 매개변수에 this가 있어야 함 | 어떤 타입을 확장할지 지정함 |
this 매개변수는 첫 번째에만 올 수 있음 | 두 번째 이후 매개변수에는 this 사용 불가 |
| 접근 가능한 namespace에 있어야 함 | 해당 확장 메서드가 있는 namespace를 using해야 사용 가능 |
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다

게임 광고 수익은 단순히 광고를 붙이는 것이 아니라, 여러 광고 네트워크를 경쟁시켜 가장 높은 수익을 만드는 구조입니다.

안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.