virtual 과 override
·
⭐C Sharp/11. 객체 지향
virtual 과 overridevirtual 과 override 는 C# 상속에서 다형성을 구현할 때 사용하는 키워드이다.그 차이를 아래에 정리한다. virtual부모 크랠스에서 선언한 메서드 / 속성을 자식 클래스가 재정의할 수 있도록 허용한다는 의미사용 위치 : 부모 클래스의 메서드나 속성 앞문법 예시 :class Animal{ public virtual void Speak() { Console.WriteLine("동물이 소리를 냅니다."); }} override부모 클래스에서 virtual 또는 abstract 로 선언된 메서드를 자식 클래스에서 재정의할 때 사용한다.사용 위치 : 자식 클래스의 메서드 앞문법 예시 :class Dog : Animal{ pub..
goto 문법
·
⭐C Sharp/00. 문법
goto 문법goto 문은 프로그램의 실행 흐름을 특정 레이블 ( Label ) 로 강제로 이동시키는 명령문이다.goto 문은 C# 에서는 거의 쓰이지 않지만, 옛날 언어 ( C , C++ ) 의 흐름 제어 방식을 그대로 유지하고 있는 명령어이다.즉 , 코드 실행 순서를 직접 "점프"시키는 기능이다.하지만 가독성과 유지보수성이 크게 떨어지므로, C# 에서는 반복문 , 조건문 , 메서드 분리 등으로 대체하는 것이 일반적이다. 문법goto 레이블이름;레이블이름: // 실행할 코드레이블이름 : 콜론 (:) 으로 끝나는 라벨 정의goto 레이블이름; 코드 흐름을 해당 위치로 점프 예시 코드using System;class Program{ static void Main() { ..
Big-O 표기법 성능 순 정리표
·
📊Algorithm/BigO
Big-O 표기법 속도 순 정리표Big-O 표기법을 빠른 순서 ( 성능이 좋은 순서 )로 정리한 표이다.시간 복잡도 기준으로 정렬되어 있다. 순위복잡도이름 / 성장 형태예시 알고리즘설명1O(1)상수 시간 ( Constant )배열 인덱스 접근 , 스택 Push / Pop입력 크기와 상관없이 한 번만 연산2O(log n)로그 시간 ( Logarithmic )이분 탐색 ( Binary Search ) , 균형 BST 탐색입력이 커져도 단계마다 절반으로 줄어든다3O(n)선형 시간 ( Linear )단순 순회 ( Loop ) , 선형 탐색입력 n 개를 한 번씩 처리4O(n log n)준선형 시간 ( Quasi - Linear )퀵정렬 , 병합정렬 , 힙정렬n 개 항목 x log n 단계 처리5O(n²)이차 시..
Big-O 표기법
·
📊Algorithm/BigO
Big-O 표기법 ( 점근 표기법 )일반적으로 알고리즘의 시간복잡도를 나타내는데 사용한다. Big-O 표기법 , Big-Omega 표기법 , Big-Theta 표기법 등이 있다.보통 성능이 얼마나 나쁜지가 중요하므로 Big-O 표기법이 제일 많이 쓰인다.Big-O 표기법은 알고리즘이 해당 차수이거나 그보다 낮은 차수의 시간 복잡도를 가질 때 사용한다.즉, Big-O 표기법은 입력 크기 n 이 커질 때 알고리즘의 실행 시간 ( 또는 메모리 사용량 ) 의 상한이 어떻게 증가하는지를 나타내는 점근적 ( Asymptotic ) 척도이다. 상수 시간 , 상수 배수 같은 세부 구현 차이는 무시하고 성장률만 본다는게 핵심이다. 핵심 규칙 ( 작동 원리 + 개념 요약 )입력 크기 n 을 먼저 정한다 ( 예시 : 배열..
DateTime
·
⭐C Sharp/09. 구조체
DateTimeDateTime 은 날짜와 시간 정보를 표현하는 구조체 ( Struct )이다.년 / 월 / 일 / 시 / 분 / 초 등의 값을 저장하고 조작할 수 있게 해준다.시스템의 현재 시간을 가져오거나, 특정 시간 차이를 계산할 때 자주 사용한다. 문법// 생성DateTime dt = new DateTime(2025, 10, 8, 13, 30, 0); // 2025년 10월 8일 13시 30분// 현재 시각DateTime now = DateTime.Now; // 시스템 현재 날짜와 시간DateTime today = DateTime.Today; // 오늘 날짜 (시간 00:00)// 문자열 포맷 변환string formatted = now.ToString("yyyy-MM-dd HH..
사람의 좌표계 vs 프로그래밍 좌표계
·
⭐C Sharp/06. 배열
2차원 배열은 행 ( Row ) → 열 ( Column ) 순으로 저장된다int [,] arr = new [2,3]{1, 2, 3}{4, 5, 6}arr [ 행 , 열 ] = arr [ y , x ]첫번째 인덱스 : 세로 방향 ( y , 행 , row )두번째 인덱스 : 가로 방향 ( x , 열 , column ) 왜 x , y 순이 아니라 y , x 순인가?C# 뿐 아니라 대부분의 프로그래밍 언어에서 2차원 배열을 다룰 때 헷갈리는 핵심 포인트이다.이건 단순히 표기 순서가 다른 문제가 아니라, "사람이 세상을 인식하는 방식" vs "컴퓨터가 메모리를 다루는 방식"의 차이에서 비롯된 것이다. 1. 사람 ( 수학 ) 의 좌표계수학 시간에 배운 좌표 평면은 이렇게 생겼다 ↑ y (위쪽이 +) │ │ └..
2차원 배열
·
⭐C Sharp/06. 배열
2차원 배열 ( Two - Dimensional Array )2차원 배열은 행 ( Ros )과 열 ( Column ) 로 이루어진 표 형태의 데이터 구조이다.즉 , 여러 개의 1차원 배열을 한 줄씩 묶어 만든 배열로 좌표나 격자 형태 ( 보드판 , 지도 등 ) 데이터를 표현할 때 자주 사용된다. 문법▼선언int[,] arr = new int[행개수, 열개수]; ▼초기화int[,] arr = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 }}; ▼접근Console.WriteLine(arr[0, 1]); // 0행 1열 → 2 출력[ , ] 는 2차원 배열을 의미하며, arr[ 행인덱스 , 열인덱스 ] 형식으로 접근한다. 예시 코드▼for 문을 이용한 출력int..
Array vs List
·
⭐C Sharp/15-2. 배열
Array vs List배열 ( Array )과 리스트 ( List )는 모두 여러 데이터를 한번에 저장하는 자료구조이지만크기 변경 가능 여부 , 메모리 관리 방식 , 성능 및 유연성에서 중요한 차이가 있다. 항목배열 ( Array )리스트 ( List )기본 형태고정 크기 자료구조동적 크기 자료구조네임 스페이스SystemSystem.Collections.Generic 선언 예시 int[ ] arr = new int[3];List list = new List( ); 크기 변경 불가능 ( 고정 )가능 ( 자동 확장 )내부 구조연속된 메모리 블록내부적으로 배열 사용. 필요시 자동 확장인덱스 접근지원 ( arr [ i ] )지원 ( list [ i ] ) 문법▼Arrayint[] numbers = new..
배열 ( Array )
·
⭐C Sharp/15-2. 배열
배열 ( Array )자료구조 ( Data Structure )는 데이터를 효율적으로 저장하고 접근하는 방법을 의미한다.이 관점에서 배열은 기본적이고 단순한 자료구조 중 하나이다.배열은 다음 두 가지 핵심 특징으로 자료구조의 조건을 충족한다.데이터를 연속된 메모리 공간에 저장인덱스를 통해 빠르게 ( 상수 시간 , O(1) ) 접근 가능 자료구조는 크게 선형 ( Linear ) 과 비선형 ( Non - linear ) 로 나눈다.구분자료 구조 예시배열의 위치선형 구조배열 ( Array ) , 연결 리스트 ( Linked List ) , 스택 ( Stack ) , 큐 ( Queue )배열 포함비선형 구조트리 ( Tree ) , 그래프 ( Graph )포함되지 않는다따라서, 배열은 선형 자료구조 ( Lin..