본문 바로가기

Software Engineering/Computer Science

(7)
[C++] 우선순위 큐 구현부더보기#include #include using namespace std;class PriorityQueue {private: vector heap; // 힙 속성 유지: 부모 노드가 자식 노드보다 크도록 만듦 void heapifyUp(int index) { if (index == 0) return; // 루트 노드에 도달하면 종료 int parent = (index - 1) / 2; if (heap[index] > heap[parent]) { swap(heap[index], heap[parent]); heapifyUp(parent); // 재귀적으로 부모 노드를 확인 } } // ..
[C#] 리스트 복사, SetCursor C# 콘솔앱으로 프로젝트를 진행하던 중 새로 배운 기능 정리. 목   차 리스트 복사리스트 하나의 요소 복사List copiedList.Add(originalList[index]);원하는 하나의 요소를 복제하는 것은 그리 어렵지 않다. 리스트 전체 복사List copiedList.AddRange(originalList);리스트를 다음과 같이 하면 original리스트의 전체를 복사해버릴 수 있다.리스트 일부 복사List copiedList = originalList.GetRange(0, n + 1); // 인덱스 0부터 시작, n + 1개의 요소를 복사 이게 내가 궁금해서 찾아본 이번 공부의 실체다. 일부만 복사하려면, Add 대신 GetRange를 사용해서 원하는 인덱스와 거기서부터 필요한 요소의 개수..
[C#] 네임드 튜플+정렬 알고리즘 목   차 네임드 튜플퀘스트 저장 메커니즘을 임시로 int[,]의 정수형 이차원배열로 만들었는데 다른 사람들까지 알아보기 쉽게 만드려면 이 방법을 쓰라 하셔서 배워본다.정의네임드 튜플은 각 요소에 이름을 지정해서 데이터를 다룰 때 더 명확하고 이해하기 쉽게 한다. 배열로는 사용할 수 없고, List 같은 걸로 사용할 수 있다.사용방법List people = new List{ ("John", 30), ("Mary", 25)};foreach (var person in people){ Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");}이런 식으로 네임드 튜플을 사용하면  " .(내가 만든 이름) " 으로 후에 불러올 수 있으니 확실히..
[C#] 클래스, 직렬화, 메서드 수식자 이번 주차에 진행한 개인프로젝트를 돌아보며 쓰는 회고록 겸 추가로 궁금했던 사항들에 대해 정리하는 글이다.  목   차  GPT가 알려주는 C# 코너상속, 추상클래스, 인터페이스 각각을 사용할 상황.지난 금요일(24.04.26)에 튜터님한테 배운 내용을 생각해보니, 내가 아직 클래스들에 대한 이해도가 부족한 것을 느끼고 이에 대해 다양한 예를 들어 물었다. #일반 부모클래스ex) 사람 클래스의 자식 클래스로 학생 클래스, 직장인 클래스가 있을 수 있지만 둘 모두에 속하지 않는 사람도 존재해야 할 때.공통의 기능이 있는 경우: 부모 클래스의 메서드/속성을 자식이 이어받게.확장성이 필요할 때 구체적 관계 표현#추상 클래스ex) 사람 클래스를 직접적으로 사용하지 않고 만약 현재 만들어진 클래스 중 내가 만드려..
[C++, C#] C#과 다른 컴퓨터 언어의 차이점들5~7(完) 이번 글의 코드는 기초적인 구현에 시간낭비하지 않기위해  ChatGPT를 활용해 작성된 코드가 많다. 목   차   5. 배열 배열의 선언c와 cpp는 선언을 다음과 같이 한다:int intArr[5]; c#과 java는 선언을 다음과 같이 한다:int[] intArr = new int[5];new int는 cpp에서 동적배열을 할 때 사용했지만, 여기서는 오히려 5 대신 변수를 넣어버리면 C#은 오류가 난다. java는 그대로 이용하면 되지만 c#에서 동적배열을 쓰고 싶다면 cpp에서 vector와 비슷한 기능을 하는 List를 써야한다. 여기서 T는 type을 의미하며, T 대신 int 등 자료형을 입력하면 된다. 한편, 파이썬은 정적배열과 동적배열의 분리가 딱히 없다.my_list = []my_li..
[C++, C#] C#과 다른 컴퓨터 언어의 차이점들3~4 연산자와 제어문은 프로그래밍의 기본이다. 그에 따라 거의 모든 언어가 비슷한 연산자와 제어문을 공유한다. 따라서 프로그램 언어가 처음이라면 노션에서 배울 항목은 많아도, 이미 다른 언어를 어느정도 배운 적이 있다면 이 챕터들은 아마 수월하게 배울 수 있다.목   차 3. 연산연산자는 거의 모든 언어가 공유한다. 내가 배운 언어들(C, C++, C#, java, python)은 파이썬을 제외하고는 거의 차이가 없다고 봐도 무방하다.  이건 산술연산자, 논리연산자나 비트연산자 모두에 해당하는 이야기다. 특히 비트연산자는 다 같은 것으로 알고 있다. 산술연산  +, -, *, /, %, ++, --는 보기의 모든 언어가 공유한다. 어셈블리는 *, /, %가 함수로 구현되고, 파이썬은 추가로 //(정수연산)과 ..
[C++, C#] C#과 다른 컴퓨터 언어의 차이점들1~2 내가 기존에 알고 있던 C++언어 중에 몰랐던 것을 기술하는 글이다. VS Community의 '콘솔앱' 템플릿 차이 는 일부 생략한다. 목   차 1. 시작하기첫 프로그램 만들기 using System; class Program { static void Main(string[] args) { Console.WriteLine("Hello, world!"); } } 1. 원래 cpp에서도 using이 있긴 했지만, 주 #include를 통해 각종 기능을 추가했었다. 이 기능이 C#으로 오면서 using으로 바뀐듯 하다. 원래 cpp에서도 using이 있긴 했지만, 나는 "using n..