티스토리

__CODING__
검색하기

블로그 홈

__CODING__

studycl.tistory.com/m

오늘도 개인적인 공부 정리

구독자
0
방명록 방문하기

주요 글 목록

  • 5장. 패턴 매칭 [2025-02-23] - 게시글 최초 작성1. 패턴 매칭이란?어떤 식이 특정 패턴과 일치하는지 검사.2. 패턴 매칭2.1 선언 패턴주어진 식이 특정 형식과 일치하는지 평가 1. 식이 주어진 형식과 일치하는지 테스트2. 테스트가 성공하면 식을 주어진 형식으로 변환/* * 1. obj가 int인 경우 * 2. obj가 int형식으로 변환하여 bar에 할당 */if (obj is int bar) { Console.WriteLine(bar);}2.2 형식 패턴선언 패턴과 거의 같은 방식으로 동작, 변수 생성 없이 형식 일치 여부만 테스트object obj = 23;if (obj is int) { Console.WriteLine(obj);}class Preschooler { }class Under.. 공감수 0 댓글수 0 2025. 2. 23.
  • 05장. Switch [2025-02-23] - 게시글 최초 작성1. Switch 사용시 주의점! 가능한 한 연속적인 정수형 case를 사용하여 점프 테이블 최적화를 유도. 불필요하게 복잡한 조건을 줄이는 것이 중요하다.2. Switch 문2.1 형식 패턴// To Version C# 7.3object obj = 123;switch (obj){ case int: // ... break; case float: // ... break; default: break;} 2.2 케이스 가드 switch 문의 case절의 패턴을 더 구체적으로 만들어주는 추가적인 조건 검사// To Version C# 7.3object obj = 123;switch (obj).. 공감수 0 댓글수 0 2025. 2. 23.
  • C# 프로그래밍 간단 정리 [2025-02-19] - 게시글 최초 작성[2025-02-23] - 내용 추가 ( 2-2 ~ 4 )1. C# 프로그래밍C++ 프로그래밍과의 차이점!컴파일 방식C++  1. 소스 코드(.cpp) 작성 2. 컴파일러(g++, MSVC) 가 네이티브 코드로 변환 ( .exe, .out 생성 ) 3. 운영 체제에서 실행C#  1. 소스 코드 (.cs) 작성 2. C# 컴파일러 (csc) 가 IL(Intermediate Lanuage) 코드로 변환 3. .NET 런타임(CLR, Common Language Runtime) 이 JIT(Just-In-Time) 컴파일하여 실행 용어 정리한정자 : 다른 요소들을 꾸며주는 역할을 하는 요소CLR : C#으로 만든 프로그램이 실행되는 환경 ( 자바의 가상 머신과 비슷한 .. 공감수 1 댓글수 1 2025. 2. 19.
  • Async / Await [2025-02-09] - 게시글 최초 작성1. Async / Await 란? 비동기 프로그래밍을 간편하게 만들어주는 문법적 도우미. 컴파일러가 자동으로 생성하는 "상태 기계"에 핵심이 숨어 있다.2. Async / Await2.1 상태 기계메서드의 실행 상태(어느 부분까지 실행되었는지, 지역 변수 값 등) 을 저장하는 객체해당 객체는 일반적으로 힙에 할당되며, 메서드가 중단되었다가 재개될 때 필요한 정보를 가지고 있다. 1. aysnc 메서드가 컴파일될 때, 컴파일러는 해당 메서드를 IAsyncStateMachine 인터페이스 구현 - 이 내부 클래스는 메서드의 지역 변수, 현재 상태, Task의 결과를 전달할 빌더 등을 필드로 갖는다. 2. IAsyncStateMachine 인터페이스는 MoveNex.. 공감수 0 댓글수 0 2025. 2. 9.
  • 22장. 가비지 컬렉션 [2025-01-31] - 게시글 최초 작성1. 가비지 컬렉터란? CLR이 자동 메모리 관리 기능을 제공하고 이 기능의 중심에 가비지 컬렉션이 존재한다. 가비지 컬렉터는 CPU와 메모리 같은 컴퓨팅 자원을 소모.  unsafe 키워드 : 비관리형 코드. ( CLR이 제공하는 서비스를 받을 수 없다 )2. 가비지 컬렉터2.1 CLR이 객체에 메모리를 할당하는 방법할당하는 방법1. C#으로 작성한 소스 코드를 컴파일해서 실행 파일을 만들고,    이 실행 파일을 실행시 CLR은 프로그램을 위한 일정 크기의 메모리를 확보2. 메모리 공간을 통째로 확보해서 하나의 관리되는 힙을 마련3. 확보된 힙 메모리의 첫 번째 주소에 ' 다음 객체를 할당할 메모리의 포인터'를 위치메모리에서 해제되는 방법1. 스택에서 해당 .. 공감수 0 댓글수 0 2025. 1. 31.
  • 21장. 네트워크 프로그래밍 [2025-01-31] - 게시글 최초 작성1. 네트워크 프로그래밍** TCP/IP 스택[ 1층 ] 링크 계층 ( 물리 계층, 네트워크 접속 계층, 미디어 접근 계층 등으로도 불림 ): 네트워크의 물리적인 구성으로부터 독립적인 프로토콜  ( 컴퓨터가 네트워크에 전화선의 모뎀으로 연결되어 있던, LAN에 이더넷 케이블로 연결되어 있던,    WiFi에 연결되어 있던 간에 신경 쓰지 않음 )[ 2층 ] 인터넷 계층 ( IP : 인터넷 프로토콜 ): 패킷을 수신해야 할 상대의 주소를 저장하고, 나가는 패킷에 대해서는 적절한 크기로 분할하며,  들어오는 패킷에 대해서는 재조립을 수행  ( 내보낸 패킷을 상대방이 잘 수령했는지에 대해서 전혀 보장하지 않는다 )[ 3층 ] 전송 계층 ( TCP / UDP ): 패킷.. 공감수 0 댓글수 0 2025. 1. 31.
  • 20장. WinForm [2025-01-30] - 게시글 최초 작성1. C#의 WinForm란?폼 디자이너 툴 : 프로그래머가 그림을 그리듯 사용자 인터페이스 생성 가능2. WinForm2.1 WinForm 윈도우 만들기윈도우 OS에서 앱이 윈도우 생성하는 절차1. 윈도우 클래스 ( OOP의 클래스와는 다르다 ) 를 정의2. 정의된 윈도우 클래스를 등록3. 윈도우를 생성4. 윈도우를 사용자에게 보여줌5. 메세지 루프를 돌면서 프로그램을 시작 WinForm 클래스를 이용한 윈도우 생성 절차1. System.Windows.Forms.Form 클래스에서 파생된 윈도우 폼 클래스를 선언2. 1번에서 만든 클래스의 인스턴스를 System.Windows.Forms.Application.Run() 메소드에 인수로 넘겨 호출using Sys.. 공감수 0 댓글수 0 2025. 1. 30.
  • 19장. Task [2025-01-30] - 게시글 최초 작성1. Task / Task / Parallel 란?병렬 처리 : 하나의 작업을 여러 작업자가 나눠서 수행한 뒤 다시 하나의 결과로 만드는 것비동기 처리 : 작업 A를 시작한 후 A 결과가 나올 때까지 B, C, D ... 를 수행하다가 작업 A가 끝나면 그 결과를 받아냄.  .NET 에서 지원하는 System.Threading.Tasks 네임스페이스의 클래스들, async 한정자와 await 연산자Task 등 클래스들도 내부적으로는 Thread를 이용하여 구현.2. T a s k2.1 System.Threading.Tasks.Task 클래스 동기 코드 : 메소드를 호출한 뒤에 이 메소드의 실행이 완전히 종료되어야만 다음 메소드를 호출 가능 비동기 코드 : 메소드.. 공감수 0 댓글수 0 2025. 1. 30.
  • 19장. 스레드 [2025-01-29] - 게시글 최초 작성1. 스레드란?C#에서 .NET은 스레드를 제어하는 클래스로 System.Threading.Thread를 제공2. 스레드2.1 스레드 시작하기 실제 스레드가 메모리에 적재되는 시점은 .Start() 메소드를 호출 했을 경우. Start() : 메소드를 호출하여 스레드를 시작 Join() : 메소드를 호출하여 스레드가 끝날 때까지 대기using System;using System.Threading;namespace ThisIsCSharp{ class MainApp { static void DoSomething() { for(int i = 0; i 2.2 스레드 임의로 종료하기 Abort 메소드가 호출과.. 공감수 0 댓글수 0 2025. 1. 29.
  • 18장. 파일 다루기 [2025-01-29] - 게시글 최초 작성1. 파일 다루기란?.NET은 파일과 디렉토리 정보를 손쉽게 다룰 수 있도록 System.IO 네임스페이스를 지원2. 파일 다루기2.1 파일 정보와 디렉토리 정보 다루기 File : 파일 생성, 복사, 삭제, 이동, 조회를 처리하는 정적 메소드 제공  FileInfo : File 클래스와 하는 일은 동일하지만 정적 메소드 대신 인스턴스 메소드 제공 ( 여러 작업 ) Directory : 디렉토리의 생성, 삭제, 이동, 조회를 처리하는 정적 메소드 제공 DirectoryInfo : Directory 클래스와 하는 일은 동일하지만 정적 메소드 대신 인스턴스 메소드를 제공 ( 여러 작업 ) * File/FileInfo 와 Directory/DirectoryInfo의 .. 공감수 0 댓글수 0 2025. 1. 29.
  • 17장 Dynamic 형식 [2025-01-28] - 게시글 최초 작성1. Dynamic 형식이란, 데이터 형식. 프로그램 실행 중에 형식 검사를 진행. dynamic으로 선언시, 메소드를 선언하지 않아도 컴파일러 형식 검사를 피해 간다. * C#의 강력한 형식 검사의 경우,  프로그래머의 배포 전 테스트로 문제 단계에서 발견하여 제거 가능?2. Dynamic 형식2.1 덕 타이핑 객체지향 프로그래밍과는 다른 각도에서 형식을 본다. 인터페이스의 경우, 수정사항이 생겼을 때 확인해야 할 사항들이 많지만, 덕 타이핑은 좀 더 유연하게 해결이 가능하다. 덕 타이핑의 경우, 비주얼 스튜디오의 리펙토링 기능을 이용할 수 없다. 객체지향 : C#에서 어떤 형식을 인정 받으려면, 그 형식의 조상 중에 해당 형식을 가지고 있어야 한다. 덕 타이.. 공감수 0 댓글수 0 2025. 1. 28.
  • 16장. 애트리뷰트 [2025-01-27] - 게시글 최초 작성[2025-02-15] - 내용 추가1. 애트리뷰트란?애트리뷰트는 코드에 대한 부가 정보를 기록하고 읽을 수 있는 기능주석은 사람이 읽고 쓰는 정보라면, 애트리뷰트는 사람이 작성하고 컴퓨터가 읽음애트리뷰트( [ ] )를 이용해서 클래스나 구조체, 메소드, 프로퍼티 등에 추가 정보를 제공하는 기능. - 컴파일러, 런타임, 리플렉션 등을 활용하여 특정 동작을 수행하거나 데이터를 추가적으로 저장 가능.  * 메타데이터 : 데이터의 데이터 ( 애트리뷰트나 리플렉션을 통해 얻는 정보들도 C# 코드의 메타데이터 )2. 애트리뷰트2.1 애트리뷰트 사용하기기본적으로 제공하는 애트리뷰트[Serializable]  : 직렬화 가능하다는 메타데이터 추가시[Obsolete]  : 사.. 공감수 0 댓글수 0 2025. 1. 28.
  • 16장. 리플렉션 [2025-01-27] - 게시글 최초 작성1. 리플렉션이란객체의 형식 정보를 들어다보는 기능 ( X-Ray )프로그램 실행 중에, 객체의 형식 이름, 프로퍼티 목록, 메소드 목록, 필드, 이벤트 목록 등을 확인 가능모든 데이터 형식의 조상인 Object 형식에 GetType() 메소드를 생성2. 리플렉션2.1 Object.GetType() 메소드와 Type 클래스 GetType() 메소드는 Type 형식의 결과를 반환하는데,  Type 형식은 .NET에서 사용하는 데이터 형식의 모든 정보를 담고 있다.  ( 모든 생성자, 이벤트, 필드, 형식 매개변수, 상속하는 인터페이스, 멤버, 메소드, 내장 형식, 프로퍼티 목록 등 ) System.Type 클래스의 메소드 [msdn] System.Type Type.. 공감수 0 댓글수 0 2025. 1. 27.
  • [ TCP / IP ] 명령어 [ ping ] : 특정 ip에 데이터를 전송하여 TTL, 시간(ms)를 확인한다. [ arp ] : mac 주소확인. 통신의 확인 후 전달이 안될 때, mac을 비교하기 위하여 사용. 인터넷 주소, 물리적 주소, 유형이 출력된다. [ nslookup ] : 도메인 주소의 아이피를 확인하기 위하여 사용. 도메인 주소를 통하여 많은 아이피가 나올 수도 있지만, 특정 도메인 주소는 내부적으로 하나의 아이피를 돌아가면서 보내준다. ( 부하를 막기 위하여 ) [ netstat ] : ip, 포트, 목적지 ip, 목적지 port, 상태를 나타낸다. TCP L4 계층에서 동작한다. 공감수 0 댓글수 0 2021. 2. 12.
  • [ TCP / IP ] 프로토콜 계층화 프로토콜 계층화 장점 : 모듈화는 시스템 구성요소의 갱신을 더 쉽게 한다. 단점 : 한 계층의 기능이 하위 계층과 기능적으로 중복된다. [ ex ) 오류복구 기능 ] 다른 계층에만 존재하는 정보를 필요로 할 수 있다. OSI ( Open System Interconnection ) [ Top-Down Approch ] [ L7 ] 응용 계층 ( Application Layer ) * HTTP ( 웹 문서 요청과 전송 ), FTP ( 파일 전송 ), SMTP ( 전자 메일 전송 ), DNS ( 도메인 네임 서버 ) ... * 응용 프로세스와 직접 관계하여 다른 종단 시스템에 있는 프로세스 간의 정보 패킷을 교환하는 데 사용. * 메세지 ( message ) [ L6 ] 표현 계층 ( Presentation.. 공감수 0 댓글수 0 2021. 2. 12.
  • [ C ] 어 셈 블 리 어 셈 블 리 어셈블리어 : 기계어에서 한 단계 위의 언어이며 기계어와 함께 단 둘뿐인 저급언어. 인라인 어셈블리를 통하여 직접적으로 어셈블리 언어를 입력하여, 원하는 어셈블리 코드를 짤 수 있지만, 32bit만 가능하다. 그렇기 때문에, 코드를 개발하는 단계에서 어셈블리 명령어가 깔끔하게 나오도록 코드를 짜려고 노력하는 습관을 들어야 한다. CPU 레지스터 레지스터 : CPU 내부에서 처리할 명령어나 연산의 중간 값 등을 일시적으로 기억하는 임시 기억장소. Visual Studio 레지스터 EAX = 00ECC003 eax ( Extended Accumulator Register ) : 산술, 논리 연산에 사용하는 레지스터. EBX = 010B3000 ebx ( Extended Base Register.. 공감수 0 댓글수 0 2020. 9. 26.
  • [ C ] 메모리의 종류 ( 물리적 관점 ) 하드 디스크 컴퓨터의 전원이 나간 상태에서도, 저장된 데이터가 지워지지 않는 저장 장치. RAM ( Random Access Memory ) 휘발성 메모리, 하드 디스크에 저장되어 있는 실행 프로그램을 RAM으로 이동시켜 실행. 속도가 느린 하드디스크가 아닌 RAM으로 이동시켜 빈번하게 접근 Cache Memory Cache의 경우 CPU 내부에 존재하기 때문에, 램보다 더 빠른 속도로 ALU의 접근이 가능하다. 램에서 자주 사용되는 데이터를 Cache로 이동시켜 ALU의 빈번한 접근을 돕는다. 프로그래머가 캐시 메모리를 직접 지정할 수 없다. Register ALU의 고속 연산을 돕는 메모리이다. 데이터와 명령어를 저장하는 역할 Flip Clop(각각 16bit의 정보를 저장할 수 있는 것)의 집합. .. 공감수 1 댓글수 0 2020. 9. 22.
  • [BAEKJOON] 2482번 : 색 상 환 문 제 소 스 코 드 #include constexpr int MOD{ 1'000'000'003 }; int dp[1'001][1'001];// N, K // i번째 칸을 칠하는 경우dp[i-2][j-1] // 안칠 하는 경우dp[i-1][j] // N번째 칸의 경우, // 칠할 경우 1번 칸을 칠해서는 안되고, N-1번 칸도 칠하면 안되기 때문에, // dp[i][j] = dp[i-2][j-1] + dp[i-1][j] int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); int N, K; std::cin >> N >> K; for (int i = 0; i 공감수 0 댓글수 0 2020. 9. 20.
  • [BAEKJOON] 17404번 : RGB 거리 2 문 제 소 스 코 드 #include #include constexpr int MAX{ 1'000'001 }; int dp[1001][3]; int RGB[1001][3]; int main() { int N; std::cin >> N; for (int i = 0; i > RGB[i][j]; } } int answer{ MAX }; // 첫 번째 집의 색 for (int i = 0; i < 3; ++i) { // 선택된 집의 색상 고정 for (int j = 0; j < 3; ++j) { if (j == i) dp[0][j] = RGB[0][j]; elsedp[0][j] = MAX; } for (int j = 1;.. 공감수 0 댓글수 0 2020. 9. 19.
  • [BAEKJOON] 1086번 : 박 성 원* 문 제 소 스 코 드 #include #include #include int N, K; std::string nums[15]; long long dp[1 nums[i]; std::cin >> K; for (int i = 0; i int형으로 변형 t %= K; } arr[i] = t; } memset(dp, -1, sizeof(dp)); pw[0] = 1 % K; for (int i = 1; i < 55; ++i) pw[i] = pw[i - 1] * 10 % K; long long p{ Func(0, 0) }; long long q{ 1 }; if.. 공감수 0 댓글수 0 2020. 9. 18.
  • [BAEKJOON] 2098번 : 외판원 순회* 문 제 소 스 코 드 #include #include constexpr int INF{ 1'000'000'000 }; int N; int city[16][16]; int dp[16][1 city[i][j]; } } for (int i = 0; i < N; ++i) std::fill_n(dp[i], 1 공감수 0 댓글수 0 2020. 9. 17.
  • [BAEKJOON] 11723번 : 집 합 문 제 소 스 코 드 #include #include // 32bit // 0x 7 f f f ' f f f f; 16 // 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 constexpr int MAX_CHAR{ 7 }; class Set { public: Set() : S{ 0 } {} ~Set() {}; void Add(const int& x) { if (!((S >> x) & 1)) S |= (1 > x) & 1)) S &= ~(1 > x) & 1)) return true; elsereturn false; } void Toggle(const int& x) { if (((S >> x) & 1)) S &= ~(1 M; Set set; char str[MAX_.. 공감수 0 댓글수 0 2020. 9. 16.
  • [BAEKJOON] 1956번 : 운 동 문 제 소 스 코 드 #include #include #include // 플로이드 워셜 constexpr int INF{ 100'000'000 }; struct Edge { int mNext; int mCost; }; int dist[401][401]; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL); int V, E; std::cin >> V >> E; for (int i = 0; i > a >> b >> c; dist[a][b] = std::min(dist[a][b], c); } for (int m = 1; m 공감수 0 댓글수 0 2020. 9. 15.
  • [BAEKJOON] 10217번 : KCM Travel* 문 제 소 스 코 드 #include #include #include #include constexpr int START{ 0 }; constexpr int INF{ 1'000'654'321 }; // 비용과 소요시간 struct Airplane { int mNext; int mCost; int mTime; }; std::vector mEdge; int mDist[101][10001]; void TravelKCM(); void Dijkstra(const int&, const int&); int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL); int T; std::cin >> T; for (int.. 공감수 0 댓글수 0 2020. 9. 15.
  • [BAEKJOON] 11404번 : 플로이드 문 제 소 스 코 드 // 플로이드 워셜 알고리즘 #include #include #include constexpr int INF{ 100'000'000 }; class Graph { public: Graph() = delete; Graph(const int& n) : mSize{ n + 1 } { mDist = new int *[mSize]; for (int i = 0; i < mSize; ++i) mDist[i] = new int[mSize]; for (int i = 0; i < mSize; ++i) { std::fill_n(mDist[i], mSize, INF); mDist[i][i] = 0; } } ~Graph() { for (int i = 0; i < mSize; ++i) delete[] mDi.. 공감수 0 댓글수 0 2020. 9. 11.
  • [BAEKJOON] 11657번 : 타임머신 문 제 소 스 코 드 // 벨만 - 포드 알고리즘 #include #include #include constexpr int INF{ 0x7fff'0000 }; struct Edge { int nVector; int mWeight; }; class Graph { public: Graph() = delete; Graph(const int v) { mGraph.resize(v + 1); mDist.resize(v + 1); } void AddEdge(const int& a, const int b, const int c) { mGraph[a].emplace_back(Edge{ b, c }); // mGraph[b].emplace_back(Edge{ a, c }); } bool cycle{ false }; voi.. 공감수 0 댓글수 0 2020. 9. 10.
  • [BAEKJOON] 9370번 : 미확인 도착지 문 제 소 스 코 드 #include #include #include #include constexpr int INF{ 0x7fff'0000 }; struct Edge { int nVertex; int mWeight; bool operator other.mWeight; } }; class Graph { public: Graph() = delete; Graph(int v) { mGraph.resize(v + 1); mDist.resize(v + 1); } void AddEdge(const int& u, const int v, const int w) { mGraph[u].emplace_back(Edge{ v, w }); mG.. 공감수 0 댓글수 0 2020. 9. 9.
  • [BAEKJOON] 1504번 : 특정한 최단 경로 문 제 소 스 코 드 #include #include #include #include constexpr int INF{ 0x7fff'0000 }; struct Edge { int nV; int mDis; bool operator other.mDis; } }; class Graph { public: Graph() = delete; Graph(const int& v) { mGraph.resize(v + 1); mDist.resize(v + 1); } void AddEdge(const int& a, const int b, const int c) { mGraph[a].emplace_back(Edge{ b, c }); mGraph[b].emplace_back(Edge{ a, c }); } void Display(.. 공감수 0 댓글수 0 2020. 9. 8.
  • [BAEKJOON] 1753번 : 최단경로 문 제 소 스 코 드 #include #include #include constexpr int INF { 0x7fff'0000 }; struct Edge { int mV; int mWeight; bool operator other.mWeight; } }; class Graph { public: Graph() = delete; Graph(const int& v){ mGraph.resize(v + 1); mDist.resize(v + 1); } void AddEdge(const int& u, const int v, const int w) { mGraph[u].emplace_back(Edge{ v, w }); } void Display() { for (int i = 1; i < mGraph.size(); ++.. 공감수 0 댓글수 0 2020. 9. 7.
  • [BAEKJOON] 2206번:벽 부수고 이동하기* 문 제 소 스 코 드 #include #include struct Log { int x, y, w; }; int dp[1001][1001][2]; int dx[4]{ -1, 0, 1, 0 }; int dy[4]{ 0, 1, 0, -1 }; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL); int N, M; std::cin >> N >> M; char** walls{ new char*[N] }; for (int i = 0; i > walls[i]; std::.. 공감수 0 댓글수 0 2020. 9. 5.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.