본문 바로가기

전체 글130

자료 구조 - 레드 블랙 트리 레드 블랙 트리는 불균형하게 성장한 이진 탐색 트리의 단점을 보완한 트리 구조입니다. 레드 블랙 트리가 이진 탐색 트리와 다른 점은 노드를 빨간색, 검은색으로 표시한다는 것입니다. 레드 블랙 트리는 다음과 같은 규칙을 따릅니다. 모든 노드는 빨간색 아니면 검은색이다. 루트 노드는 검은색이다. NIL(잎) 노드는 검은색이다. 빨간 노드의 자식들은 모두 검은색이다. 하지만 검은색 노드의 자식이 빨간색일 필요는 없다. 루트 노드에서 모든 NIL(잎) 노드 사이에 있는 검은색 노드의 수는 모두 동일하다. NIL 노드는 아무 데이터도 갖고 있지 않은 색깔만 검은색인 노드입니다. 굳이 NIL 노드를 사용하는 이유는 구현을 쉽게 하기 위해서입니다. NIL 노드를 양쪽 자식으로 연결해서 NIL 노드가 잎 노드가 되면 .. 2021. 1. 7.
자바 super() 생성자는 상속되지 않습니다. 생성자의 기본 문법이 public 클래스명(){} 이기 때문에 클래스명이 이미 다르므로 문법에 맞지 않습니다. 서브 클래스의 인스턴스를 생성할 때는 자동으로 슈퍼클래스의 인스턴스를 먼저 생성한 후 서브 클래스의 인스턴스가 생성됩니다. 따라서 서브 클래스의 생성자를 호출하였는데 오류가 발생한다면 슈퍼클래스의 기본 생성자가 생성되어 있지 않을 확률이 높습니다. 생성자는 상속되지 않지만 부모 클래스의 생성자를 호출하는 방법은 있습니다. 생성자 super() super() 메서드는 슈퍼클래스의 생성자를 호출합니다. ​ 목적 1 ) 슈퍼클래스의 생성자 중 특정 생성자를 명시적으로 호출해야 하는 경우 슈퍼클래스에 기본 생성자 없이 파라미터 생성자만 정의할 경우 서브 클래스에서 슈퍼클래스.. 2021. 1. 6.
자바 상속과 오버라이딩 상속이란 무엇일까요? 부모님에게 상속을 받으면 부모님이 가지고 있는 것의 모든 것들을 물려받을 수 있습니다. 자바에서의 상속은 기존 클래스의 변수나 메서드를 다른 클래스에서 재사용하기 위함입니다. 상속에서 물려주는 클래스를 조상 클래스, 부모 클래스, 상위 클래스, 슈퍼 클래스라고 부르고 상속받는 클래스를 자식 클래스, 자손 클래스, 하위 클래스, 서브 클래스라고 합니다. 상속의 기본 문법과 코드 예시 class 서브클래스 extends 슈퍼클래스 상속의 기본문법은 위와 같습니다. 슈퍼클래스의 멤버변수나 메서드들을 서브클래스에서 그대로 사용할 수 있습니다. package hyuni; public class Inheritance { public static void main(String[] args) { .. 2021. 1. 6.
자바 싱글톤 패턴, 싱글톤 패턴 예시 싱글톤 디자인 패턴(Singleton Design Pattern) 유일한 인스턴스 하나만 생성해서 공유하는 프로그래밍 작성 패턴입니다. 동일한 자원을 사용하는 경우에 불필요한 낭비를 하지 않기 위해서 작성하는 디자인 패턴입니다. ​ 1. 외부에서 인스턴스 생성이 불가능하도록 생성자를 private으로 지정 2. 외부에서 인스턴스 생성이 불가능 하므로 클래스 내에서 직접 인스턴스 생성 3. 외부에서 인스턴스를 전달 받을 수 있도록 내부에서 Getter 메서드를 사용하여 인스턴스를 전달해준다. 싱글톤 디자인 패턴(Singleton Design Pattern) 예시 class SingletonClass { 1. 생성자 정의 private SingletonClass () {} // 생성자를 접근 할수 없도록 접.. 2021. 1. 6.
자바 클래스, 인스턴스, 메서드, 생성자, 오버로딩 클래스와 인스턴스 자바는 흔히 객체지향적인 언어라고 말합니다. 그렇다면 객체지향적 프로그래밍이라는 것은 무엇을 뜻하는 걸까요? ​ Object Oriented Programming(객체지향적 프로그래밍) is A.P.I.E A(Abstraction) : 추상화 P(Polymorphism) : 다형성 I(Inheritance) : 상속성 E(Encapsulation) : 캡슐화 이 4가지의 특성을 잘 이용해 만드는 것을 객체 지향적인 프로그래밍이라고 합니다. 클래스는 이 4가지의 특성 중 추상화를 뜻합니다. 자바에서 추상화란 현실의 객체를 분석하여 클래스로 정의하고, 해당 클래스를 메모리 내의 실체(인스턴스)로 구현하여 사용하는 것을 뜻합니다. 그렇다면 현실의 객체를 어떻게 클래스로 정의하면 좋을까요? 예.. 2021. 1. 6.
[백준 알고리즘][자바] 1330번 : 두 수 비교하기 https://www.acmicpc.net/problem/1330 1330번: 두 수 비교하기 두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오. www.acmicpc.net 문제 해설 if문을 이용한 두 수 비교하기 문제입니다. 해결 방법 제한사항에 대한 코드를 작성해주는 것이 포인트! import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int A; int B; while(true) { A = scan.nextInt(); B = scan.nextInt(); if(A = -10000 && B = -10000).. 2021. 1. 6.
[백준 알고리즘][자바] 2588번 : 곱셈 https://www.acmicpc.net/problem/2588 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 문제 해설 세 자릿수끼리의 곱셈 과정을 프로그램으로 작성하는 문제입니다. 해결 방법 스캐너를 통해 두 수를 입력해준 뒤, 나머지 연산과 뺄셈을 이용해서 자릿수를 구하고 계산하였습니다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int A, B; A = scan.nextInt(); B = scan.nextInt(); Syst.. 2021. 1. 5.
[백준 알고리즘][자바] 1000번 : A+B https://www.acmicpc.net/problem/1000 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 해결 방법 Scanner를 통하여 두 수를 입력하고, println()메서드로 출력합니다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int A, B; A = scan.nextInt(); B = scan.nextInt(); System.out.println(A+B); } } 2021. 1. 5.
자바 배열(Array) 배열 이란 같은 타입의 여러개의 변수를 하나의 묶음으로 다루는 메모리 공간입니다. 배열은 다음과 같은 특징이 있습니다. 같은 타입의 값들만 저장 가능 기본 데이터타입과 참조 데이터타입 모두 배열로 저장 가능 여러 개의 변수에 해당하는 메모리 공간이 연속된 공간에 차례대로 생성됨 한 번 생성된 배열은 크기 변경 불가능 배열은 선언, 생성, 초기화 3단계의 과정을 거쳐서 사용 배열 생성 시 자동으로 기본값으로 초기화 (int형 기본값 : 0, double형 기본값 : 0.0, boolean형 기본값 : false 등) 배열 생성 시 인덱스 번호가 자동으로 부여되며, 0 ~ 배열크기-1 까지 사용됨 배열명(변수명)을 사용하여 배열을 관리 가능(인덱스 번호 지정 필요) 배열 크기는 배열명.length 속성을 사.. 2021. 1. 5.
반응형