[C#] 개념 - 코딩테스트 대비!

주예성·2025년 8월 1일

C# 창고

목록 보기
2/2

코딩테스트에서 함수를 잘 몰라서 혹은 응용법을 잘 몰라서 때문에 로직이 복잡해지는 경우가 있죠? 이때 알아두면 좋은 기초 함수를 가져왔습니다.


📊 Math (수학 관련)

// 최댓값, 최솟값
Math.Max(a, b)		// 둘 중 큰 값
Math.Min(a, b)		// 둘 중 작은 값
Math.Max(Math.Max(a, b), c)		// 3개 중 최댓값

// 절댓값, 제곱근
Math.Abs(-5)		// 5 (절댓값)
Math.Sqrt(16)		// 4.0 (제곱근)
Math.Pow(2, 3)		// 8.0 (2의 3제곱)

// 올림, 내림, 반올림
Math.Ceiling(3.2)	// 4.0 (올림)
Math.Floor(3.8)		// 3.0 (내림)
Math.Round(3.6)		// 4.0 (반올림)

🔤 String (문자열)

string str = "Hello World";

// 기본 정보
str.Length				// 11 (길이)
str[0]					// 'H' (인덱스 접근)
str.Contains("ell")		// true (포함 여부)

// 변환
str.ToUpper()			// "HELLO WORLD"
str.ToLower()			// "hello world"
str.Replace("World", "C#")		// "Hello C#"

// 분할/결합
str.Split(' ')			// ["Hello", "World"]
string.Join(",", arr)	// 배열을 ","로 연결

// 부분 문자열
str.Substring(0, 5)		// "Hello" (시작인덱스, 길이)
str.Substring(6)		// "World" (시작인덱스부터 끝까지)

// 찾기
str.IndexOf("o")		// 4 (첫 번째 'o'의 인덱스, 없으면 -1)
str.LastIndexOf("o")	// 7 (마지막 'o'의 인덱스)

📋 Array(배열)

int [] arr = {3, 1, 4, 1, 5};

// 정렬
Array.Sort(arr)			// 오름차순 정렬
Array.Reverse(arr)		// 배열 뒤집기

// 찾기
Array.IndexOf(arr, 4)	// 2 (값 4의 인덱스, 없으면 -1)
Array.Exists(arr, x => x > 3)	// true (조건 만족하는 요소 존재?)

// 복사
int[] copy = new int[arr.Length];
Array.Copy(arr, copy, arr.Length);

📚 List (리스트)

List<int> list = new List<int>();

// 추가/삭제
list.Add(1)			// 끝에 추가
list.Insert(0, 5)	// 특정 위치에 삽입
list.Remove(1) 		// 첫 번째로 발견되는 1 제거
list.RemoveAt(0)	// 0번 인덱스 제거
list.Clear(0)		// 모든 요소 제거

// 정보
list.Count			// 개수
list.Contains(5)	// 포함 여부
list[0]				// 인덱스 접근

// 정렬/변환
list.Sort()			// 오름차순 정렬
list.Reverse()		// 뒤집기
list.ToArray()		// 배열로 변환

🗂️ Dictionary<K,V> (해시맵)

Dictionary<string, int> dict = new Dictionary<string, int>();

// 추가/수정
dict["apple"] = 5		// 키-값 추가/수정
dict.Add("banana", 3)	// 추가 (키가 이미 있으면 예외)

// 접근/확인
dict["apple"]			// 5 (값 접근)
dict.ContainsKey("apple")	// true (키 존재 여부)
dict.ContainsValue(5)		// true (값 존재 여부)
dict.TryGetValue("apple", out int value)	// 안전한 접근

// 정보
dict.Count				// 개수
dict.Keys				// 모든 키
dict.Values				// 모든 값

🔄 Queue & Stack

// Queue (FIFO - 먼저 들어간 게 먼저 나옴)
Queue<int> queue = new Queue<int>();
queue.Enqueue(1)		// 큐에 추가
int first = queue.Dequeue()		// 첫 번째 요소 제거하고 반환
int peek = queue.Peek()			// 첫 번째 요소 확인만 (제거 안함)

// Stack (LIFO - 나중에 들어간 게 먼저 나옴)
Stack<int> stack = new Stack<int>();
stack.Push(1)			// 스택에 추가
int top = stack.Pop()	// 맨 위 요소 제거하고 반환
int peek = stack.Peek()	// 맨 위 요소 확인만

🎯 LINQ

using System.Linq;

int[] numbers = {1, 2, 3, 4, 5, 6};

// 필터링
numbers.Where(x => x > 3)		// {4, 5, 6}
numbers.Where(x => x %2 == 0)	// {2, 4, 6} (짝수만)

// 변환
numbers.Select(x => x * 2)		// {2, 4, 6, 8, 10, 12}
numbers.Select((x, i) => x + i)	// 값과 인덱스 사용

// 집계
numbers.Sum()					// 21 (합계)
numbers.Max()					// 6 (최댓값)
numbers.Min()					// 1 (최솟값)
numbers.Average()				// 3.5 (평균)
numbers.Count(x => x > 3)		// 3 (조건 만족하는 개수)

// 정렬
numbers.OrderBy(x => x)				// 오름차순
numbers.OrderByDescending(x => x)	// 내림차순

// 기타 유용한 것들
numbers.Take(3)						// 처음 3개 {1, 2, 3}
numbers.Skip(2)						// 처음 2개 건너뛰고 {3, 4, 5, 6}
numbers.First()						// 1 (첫 번째, 없으면 예외)
numbers.FirstOrDefault()			// 1 (첫 번째, 없으면 기본값)
numbers.Last()						// 6 (마지막)
numbers.Any(x => x > 5)				// true (조건 만족하는 게 하나라도 있나?)
numbers.All(x => x > 0)				// true (모두 조건 만족하나?)
numbers.Distinct()					// 중복 제거

🔢 형변환

// 문자열 - 숫자
int Parse("123")		// 123 (문자열을 int로)
"123".ToString()		// "123" (int를 문자열로)
Convert.ToInt32("123")	// 123 (다른 방법)

// 안전한 변환
int.TryParse("123", out int result)		// 변환 성공하면 true

// char - int
'5' - '0'				// 5 (문자를 숫자로)
5 + '0'					// '5' (숫자를 문자로)

🎲 자주 쓰는 패턴들

// 2차원 배열 순회
for (int i = 0; i < arr.getLength(0); i++)		// 행
	for (int j = 0; j < arr.GetLength(1); j++)	// 열
    
// 배열 초기화
int[] arr = new int[5];				// {0, 0, 0, 0, 0}
int[] arr = Enumerable.Repeat(1, 5).ToArray();	// {1, 1, 1, 1, 1}
int[] arr = Enumerable.Range(1, 5).ToArray();	// {1, 2, 3, 4, 5}

// 조건부 삼항 연산자
int result = condition ? valueIfTrue : valueIfFalse;

// null 체크 간단히
string result = str?.ToUpper() ?? "DEFAULT";

특히 꼭 외워두면 좋은 것들:

  • Math.Max/Min - 비교문 대신 쓰면 훨씬 깔끔
  • LINQWhere, Select, Sum, Max - 배열 처리가 한 줄로!
  • dictionary - 해시 문제는 거의 이걸로 해결
  • Queue/Stack = BFS/DFS 문제 필수
profile
Unreal Engine & Unity 게임 개발자

0개의 댓글