목록분류 전체보기 (241)
Minwoo Dev.
문제 1 앞서 상속관계에 놓여있는 클래스의 생성자 정의 및 호출 방식에 대해 설명하였다. 이 내용을 바탕으로 다음 클래스에 적절한 생성자를 삽입해보자. 그리고 이의 확인을 위한 main 함수를 적절히 정의해 보자. class Car { private: int gasolineGauge; public: int GetGasGauge() { return gasolineGauge; } }; class HybridCar : public Car { private: int electricGauge; public: int GetElecGauge() { return electricGauge; } }; class HybridWaterCar : public HybridCar { private: int waterGauge; p..
instanceof 다형적 참조를 이용할 때, 여러가지 방법으로 참조를 하게 된다. 이럴 때, 어떤 변수가 어떤 타입의 값을 참조하고 있는지 헷갈릴 수 있다. 그럴 때 확인할 수 있는 방법이 instanceof이다. instanceof를 사용하는 방법에 대하여 알아보겠다. 우선 사용 형식이다. (인스턴스 이름) instanceof (타입 이름) 위 형식대로 작성한다면, (인스턴스 이름) 이 (타입 이름)의 인스턴스인지를 확인하여 true , false 로 출력한다. (인스턴스 이름) : 인스턴스를 참조한 변수 이름이 들어간다. (타입 이름) : 클래스 이름이 들어간다. 예시 코드 package practice.poly; public class instanceofex { public static void ..
다형성(polymorphism) 한 객체가 여러 개의 객체로 취급될 수 있는 것을 의미한다. 상속받는 관계의 Parent와 Child 클래스를 만들어 보겠다. Parent.java package practice.poly; public class Parent { public void pMethod(){ System.out.println("This is Parent's method"); } } Child.java package practice.poly; public class Child extends Parent{ public void cMthod(){ System.out.println("This is Child's method"); } } Main.java package practice.poly; publ..
JavaScript에서는 true처럼 쓸 수 있는 Truthy와 False처럼 쓸 수 있는 Falsy라는 값이 존재한다. JavaScript는 boolean 값에서 형변환을 지원하기 때문에, Truthy한 값들은 true로, Falsy한 값들은 false로 변환된다. Truthy undefined null 0 -0 NaN // Not a Number "" 0n // 큰 수를 나타낼 때 사용 위와 같은 값들은 true와 비슷한 맥락으로 사용될 수 있다. Falsy "hello" 123 [] {} ()=>{} 위와 같은 값들은 Falsy한 값들으로, false로 변환되어 사용된다.
이전 코드를 바탕으로 노드를 삭제하는 함수를 작성하겠다. 고려해야 할 사항은 아래와 같다. 원래 노드가 빈 노드인 경우 삭제해야할 값이 첫번째 노드인 경우 삭제해야할 값이 중간에 있는 노드인 경우 삭제해야할 값이 마지막 노드인 경우 void deleteNode(Node **head, int data) { if (*head == NULL) // 원래 노드가 빈 노드인 경우(삭제할 값이 없음) { printf("빈 연결리스트입니다. \n"); return; } Node *cur = *head; if (cur->data == data) // 첫 노드가 삭제할 노드인 경우 { *head = cur->link; // head 노드를 한칸 옮김(노드 삭제) free(cur); // 할당 해제 return; } No..
단일 연결리스트를 사용하기 위해 우선 구조체를 정의해준다. typedef struct _node { int data; struct _node *link; } Node; 그리고 값을 입력하면 그 값을 연결리스트에 넣어주는 함수를 작성하겠다. 함수는 아래의 경우로 나눠질 것이다. 연결리스트에 아무 값도 들어있지 않은 상태(NULL 상태) 연결리스트에 값이 들어있는 상태 위 조건을 참고하여 AddNode함수를 작성해보겠다. void AddNode(Node **head, int val) // main에서 head를 가져오므로 더블포인터(**) 사용! { Node *newnode = (Node *)malloc(sizeof(Node)); // 새로운 노드 생성! newnode->data = val; // 값 넣기 ..
연결 리스트(Linked List) 연결 리스트는 data와 link로 이루어진 여러 개의 묶음이 이어져있는 형태이다. 연결리스트를 사용하기 위해, C언어 기준으로 우리는 구조체를 사용한다. typedef struct _node { int data; // 데이터를 저장하는 변수 struct _node *link; // 다음 노드를 가리킬 링크 } Node; 기본적으로 위의 형태와 같이 작성한다. data는 사용자의 필요에 따라 int형 값이 아닌 다른 변수형으로 선언해도 무방하다. 그리고 다음 노드와의 연결을 위한 link 가 필요한데, 이 link는 우리가 선언한 구조체를 그대로 자료형으로 사용하여 포인터 형식으로 선언한다. 말 그대로 다음 노드를 "가리키는" 것이 목적이기 때문에 포인터 변수로 선언한..
문제 더미 노드의 유무에 따른 코드의 변화를 직접 경험하는 것은 코드의 이해력을 높이는 데 도움이 된다. 그래서 LinkedRead.c에서 생성하는 연결 리스트에 더미 노드를 추가하고, 그에 따른 코드의 변화를 직접 확인하기로 하겠다. 이 예제는 리스트의 끝에다가 노드를 추가하는 방식이므로 head 와 tail 이 모두 필요하다. 조건에 맞게 코드를 수정하라. LinkedRead.c #include #include typedef struct _node { int data; struct _node *next; } Node; int main(void) { Node *head = NULL; Node *tail = NULL; Node *cur = NULL; Node *newNode = NULL; int read..
문제 예제 LinkedRead.c 에 익숙해지는 가장 빠르고도 흥미로운 길은 예제를 조금 수정해 보는 것이다. 따라서 예제를 조금 수정해 볼 기회를 제공하고자 한다. 예제 수정을 위한 주제는 다음과 같다. 새 노드를 연결 리스트의 꼬리가 아닌 머리에 추가한다. LinkedRead.c #include #include typedef struct _node { int data; struct _node *next; } Node; int main(void) { Node *head = NULL; Node *tail = NULL; Node *cur = NULL; Node *newNode = NULL; int readData; while (1) { printf("자연수 입력 : "); scanf("%d", &readD..
this C++에서 this는 해당 객체 자체를 참조하는 포인터이다. 객체 내에서 본인이 가지고 있는 멤버변수나 멤버 함수에 접근하기 위하여 this를 많이 사용한다. #include using namespace std; class Score { private: int schoolNum; int score; public: Score(int schoolNum, int score) { this->schoolNum = schoolNum; // this 사용!! this->score = score; // this 사용!! } void showInfo() { cout score = score; } void showInfo() { cout