https://www.acmicpc.net/problem/1068처음에 풀 때 사고 과정은 이러했다.먼저 입력 받은 부모 노드를 parenti 배열에 저장하고 그래프를 만들어 각 노드들의 자식 노드를 저장한다.삭제하려는 노드를 입력받아 삭제할 노드를 시작 정점
JVM이란? >JVM(Java Virtual Machine)은 자바 언어로 작성된 프로그램을 실행하기 위한 가상 컴퓨터이다. >개발자가 자바 언어로 코드를 작성하면 CPU가 인식을 하지 못해 기계어로 컴파일 과정을 거쳐야 한다. 다른 언어와 달리 자바는 JVM이라는
업캐스팅(upcasting)과 다운 캐스팅(downcasting) >upcasting : 자식 클래스의 인스턴스를 부모 클래스의 타입으로 변환하는 것 downcasting : 부모 클래스의 인스턴스를 자식 클래스의 타입으로 변환하는 것 >Animal animal =
상속(inheritance)이란? >한 클래스(자식 클래스) 다른 클래스(부모 클래스)의 속성과 메소드를 이어받는 것이다. 상속을 받는 클래스 : 자식 클래스(서브 클래스) 상속을 해주는 클래스 : 부모 클래스(슈퍼 클래스) 상속의 장점 >1. 상속을 통해 코드 재사
static 변수란? >클래스 변수라고도 불리며 클래스 수준에서 공유되는 변수이다. static 변수는 모든 인스턴스들이 공유하며 사용할 수 있으며, 클래스 내에서 한 번 값이 할당되면 클래스 내의 모든 인스턴스들이 동일한 값을 참조하게 된다. static 변수 장점
this란? 현재 객체를 참조하는 특수한 키워드로 다음과 같은 세 가지 역할을 수행한다. >**1. 자기 자신의 인스턴스 멤버 지칭 생성자에서 다른 생성자를 호출할 경우 자기 자신의 메모리 주소 반환** 장점 : 객체 지향 프로그래밍에서 코드의 가독성과 명확성을
정보 은닉의 필요성 우리는 지금까지 객체를 만들며 필드, 생성자, 메소드를 외부에서 직접 접근할 수 있도록 클래스를 만들었다. 하지만 이 고유의 정보들을 외부에서 직접 접근하여 상태와 동작을 제어하면 보안상에 문제가 발생할 것이다. 따라서 우리는 클래스의 내부 데이
객체지향 프로그래밍 OOP(Object-Oriented Programming)란? >현실 세계의 사물이나 개념을 객체(Object)로 표현하고 이들 객체 간의 상호작용을 통해 프로그램을 구성하는 방식이다. 객체지향 프로그래밍 특징 추상화 : 클래스들의 공통적인 특성들
배열이란? >배열 : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 앞서 배운 변수는 1개의 데이터만 저장할 수 있었다. 하지만 데이터의 수가 많아지면 변수 하나하나 관리가 효율적이지 못하다. 따라서 같은 자료형의 여러 변수를 하나의 묶음으로 다룰 수 있는데
프로그램의 흐름을 바꾸는 역할로 조건문과 반복문이 있다.주어진 조건에 따라 프로그램의 실행 흐름을 제어하는 구문으로 if문과 switch문이 있다.if문의 구조는 다음과 같다.if문 조건식이 참이면 if문 안에 문장들이 실행된다.다음은 if-else문이다. 위에 if문
변수(variable)는 값을 저장하고 참조하기 위해 사용되는 이름이나 식별자이다.변수 선언 방법은 두 가지가 있다.변수 선언 및 초기화자료형과 변수 이름을 설정하는 동시에 변수 값을 10으로 초기화하는 방법이다.변수 선언 후, 값 대입두 번째 방법은 자료형과 변수 이
그래프의 한 정점에서 다른 정점까지 가는 최단거리를 구하는 알고리즘이다.이전 시간에 다뤄봤던 다익스트라 알고리즘과 매우 비슷하지만 음의 간선이 존재해도 최단 경로를 찾을 수 있는 알고리즘이다.이전에 배웠던 최단 경로 알고리즘을 정리해보자.가중치가 없을 때(=동일할 떄)
다익스트라 알고리즘은 그래프의 특정 정점에서 갈 수 있는 모든 정점들까지의 최단 경로를 구하는 알고리즘이다.매번 최단 경로의 정점을 선택해 탐색을 반복한다.그래프에서 최소 비용을 구하는 알고리즘은 다익스트라 알고리즘 외에 벨만-포드 알고리즘, 프로이드 워샬 알고리즘이
최소 신장 트리(MST)을 구현하기 위해 사용되는 알고리즘으로 시작 정점에서부터 정점을 하나씩 추가하며 트리를 확장하는 알고리즘이다.이 때 연결은 시작 정점으로부터 방문되지 않은 정들의 가중치 중에서 작은 값들만 찾아 탐색한다.(항상 최적의 해를 찾아서 감)임의의 정점
그래프 내에서 모든 정점들을 가장 적은 비용으로 연결하는 알고리즘이다. 즉, 최소 신장 트리를 구하는 알고리즘이다.그렇다면 최소 신장 트리는 무엇일까?최소 신장 트리를 알기 전에 신장 트리에 대해서 알아야한다.신장 트리그래프에서 모든 정점을 포함한다.정점 간 서로가 연
서로 중복되지 않는 원소들로 나눠진 부분집합들, 즉 서로소 집합 자료구조인 Disjoint Set을 표현하는 알고리즘이다.Union Find 알고리즘은 Union과 Find라는 2가지 연산으로 이루어진다.Find(a, b) : a가 어떤 집합에 포함되어 있는지 찾는 연
1. Path parameter Query parameter request body 1. Path parameter >어떤 리소스를 식별하고 싶을 때는 path parameter을 사용한다. path는 /(슬래시)를 통해 구분을 한다. 예를 들면 /users/123은
트리 1에서 트리의 구성 요소와 이진트리의 종류에 대해서 알아봤다.이번에는 연결리스트를 통해 트리가 어떻게 만들어지는지 살펴보자.트리는 그림과 같이 노드 구조체에 자신의 데이터 값과, left 노드, right 노드를 포함한다.코드로 구현해보면 다음과 같다.노드 생성하
트리는 노드와 간선으로 이루어진 계층적 관계를 표현하는 자료구조이다.스택이나 큐와 같이 선형 구조가 아닌 비선형 구조이다.그림과 같이 나무를 거꾸로 뒤집어 놓은 듯한 형태를 볼 수 있다.노드(Node) : 트리의 구성요소에 해당하는 요소(A,B,C,D...)간선(Edg
스택은 나중에 넣은 데이터가 먼저 나오는 FIFO(First In First Out)형식의 자료구조였다면, 큐는 먼저 넣은 데이터가 먼저 나오는 LIFO(Last In First Out)형식의 자료구조이다.큐를 구현할 때 연결리스트를 사용할 수도 있고 배열을 사용할 수