전체 글

전체 글

    [Java] 팩토리얼 [Factorial] 구현

    팩토리얼이란 팩토리얼이란 한글로 '계승'을 뜻하며 1에서 n까지의 모든 자연수를 곱하는 것을 의미한다. 팩토리얼은 ! 기호로 표기한다. ex. 3! = 1 * 2* 3 = 6 // 4! = 1 * 2* 3* 4 = 24 팩토리얼 구현 - 반복문 인자로 정수 n을 받음. 곱셈 연산의 결과를 저장할 result 변수 선언 후 1로 초기화 for문을 사용하여 초기식, 조건식, 증감식은 다음과 같이 작성함. 첫 번째 반복 : result = result * i(1) -> 1 * 1 두 번째 반복 : result = result * i(2) -> 1 * 2 세 번째 반복 : result = result * i(3) -> 2 * 3 ... n 번째 반복 : result = result * i(n) -> (n-1)!..

    [Java] Queue

    보호되어 있는 글입니다.

    [Java] 메서드 오버라이딩(Method Overriding)

    [Java] 메서드 오버라이딩(Method Overriding)

    메서드 오버라이딩이란 메서드 오버라이딩(Method Overriding)은 상위 클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 재정의하는 것 메서드 오버라이딩을 학습하며 가장 떠오른 짤.. "이 메서드는 이제 제 겁니다. 제 마음대로 할 수 있는 것입니다."같은 느낌.. class Animal { public void cry() { System.out.println("울음소리"); } } class Cat extends Animal { @Override public void cry() { // 상위 클래스의 cry() 오버라이딩 System.out.println("냐옹~"); } } class Dog extends Animal { @Override public void cry() { // 상위 클..

    [Java] Stack 구현

    [Java] Stack 구현

    스택이란? Stack은 쌓다, 쌓이다, 포개지다 와 같은 뜻을 가지고 있다. 뜻 그대로 데이터를 순서대로 쌓는 자료구조이다. 스택에 데이터를 넣는 작업을 push라 하며, 스택에서 데이터를 꺼내는 작업을 pop이라 한다. pop을 통해 데이터를 꺼내면 스택에서 제거된다. push와 pop이 이루어지는 부분을 top이라 하고, 가장 아랫부분을 bottom이라 한다. 스택의 특징 LIFO(Last In First Out) 또는 FILO(First In Last Out) 데이터의 입력과 출력 순서는 후입선출로 가장 나중에 삽입된 데이터를 가장 먼저 꺼낼 수 있는 구조를 가지고 있다. 즉, 스택의 마지막 위치에서 데이터의 삽입과 추출이 이루어진다. 데이터는 하나씩만 넣고 뺄 수 있다. Stack 구현 - 배열 ..

    [Java] 재귀

    [Java] 재귀

    재귀의 개념 컴퓨터 과학에서 재귀란 자신을 정의할 때 자기 자신을 재참조하는 방법을 뜻한다. 재귀 함수는 재귀적으로 구현된 함수를 의미하며, 재귀 호출은 함수 내에서 자기 자신을 호출하는 행위 재귀 함수에서 예외가 발생하지 않도록 중지 시킬 수 있는 조건을 기저 조건이라 한다. 재귀 함수 템플릿 // 일반적인 재귀 함수 템플릿 public type recursive(input1, input2, ...) { // Base Case : 문제를 더 이상 쪼갤 수 없는 경우 if (문제를 더 이상 쪼갤 수 없을 경우) { return 단순한 문제의 해답; } // recursive Case // 그렇지 않은 경우 return 더 작은 문제로 새롭게 정의된 문제 // 예1. someValue + recursive..

    [Java] instanceof : 캐스팅 가능 여부 확인

    [Java] instanceof : 캐스팅 가능 여부 확인

    instanceof 캐스팅의 가능 여부를 판단하기 위해서는 '클래스 사이의 상속 관계', '어떤 생성자로 인스턴스를 생성했는가?'를 판단해야 한다. 프로젝트의 규모가 커지고, 클래스가 많아지면 이러한 조건을 매순간 판단하는 것이 어려워진다. 이를 해결하기 위해 Java에서는 캐스팅 가능 여부를 boolean 타입으로 반환해주는 instanceof라는 연산자를 제공한다. 소스 코드가 길어져 일일이 생성 객체의 타입을 확인하기 어려운 상황에서 에러를 최소화하는 유용한 수단이 될 수 있다. -> 캐스팅 가능 여부를 확인하고, 가능한 때만 캐스팅을 수행해 실행 예외로 프로그램이 종료되는 것을 방지할 수 있다. 참조 변수 instanceof 타입명 예시 public class Test { public static..

    [Java] 업 캐스팅과 다운 캐스팅

    [Java] 업 캐스팅과 다운 캐스팅

    타입에 따른 업캐스팅과 다운캐스팅 기본자료형 업캐스팅 : 범위가 좁은 쪽에서 넓은 쪽으로 캐스팅 다운캐스팅 : 범위가 넓은 쪽에서 좁은 쪽으로 캐스팅 객체 업캐스팅 : 하위 클래스에서 상위 클래스로 캐스팅 다운캐스팅 : 상위 클래스에서 하위 클래스로 캐스팅 객체의 업 캐스팅과 다운 캐스팅 객체의 업 캐스팅은 항상 할 수 있으며, 명시적으로 적어주지 않아도 컴파일러가 대신 넣어준다. 객체의 다운 캐스팅은 반드시 명시적으로 적어주어야 하며, 또한 명시적으로 적어도 다운 캐스팅 자체가 안 될 때가 있다. 잘못된 다운 캐스팅을 수행하면 'ClassCastException'이라는 예외가 발생하며 프로그램이 종료된다. public class Main { public static void main(String[] a..

    [Java] 상속 관계와 포함 관계

    [Java] 상속 관계와 포함 관계

    상속 상속이란 상속이란 기존 클래스를 재사용하여 새로운 클래스를 작성하는 자바의 문법 요소로 상위 클래스의 멤버를 내려받아 하위 클래스 내부에 포함시키는 역할을 한다. 여기서 기존 클래스는 상위(부모) 클래스, 새로운 클래스는 하위(자식) 클래스라고 한다. 상위 클래스와 하위 클래스는 서로 상속 관계라고 하며, 하위 클래스는 상위 클래스가 가진 모든 멤버를 상속받는다. '하위 클래스는 상위 클래스로부터 확장되었다'라고 표현한다. 상속 관계로 정의하기 위해서는 '하위 클래스는 상위 클래스다' 라는 조건이 참이어야 한다. -> ex. '고양이는 동물이다.'(상속 가능) / '취준생은 학생이다.' (상속 불가능) 상속의 장점 코드의 중복성 제거 클래스의 다형적 표현 가능 다형성 : 1개의 객체를 여러 가지로 ..