[Java] Boj 14496: 그대, 그머가 되어
·
PS/Solve
문제https://www.acmicpc.net/problem/14496 풀이 주어진 문자를 얼마나 적은 횟수로 변환시켜서 원하는 문자로 변환할 수 있는지 최소 변환 횟수를 구하는 문제이다. 문제 이해가 조금 난해할 뿐이지 실제로는 굉장히 간단한 BFS 문제이다. 입력은 모두 숫자로 주어지므로 단순 정수 기본 아이디어는 다음과 같다. 1. 변환 횟수를 저장할 int 타입의 dis 배열, 방문 여부를 저장할 boolean 타입의 visit 배열 선언2. 연결 리스트 형태로 그래프를 저장하기 위해 list 선언3. BFS는 a에서 시작 (문자 변환을 a부터 시작하기 때문)4. BFS 종료 후, b를 방문하였다면 dis[b]를 출력. 방문하지 않았다면 -1을 출력 추가로, 입력되는 a와 b가 같다면 변환할 필요..
[프로그래밍 언어론] 객체지향 언어 - 상속
·
CS/프로그래밍 언어론
상속 프로그래밍 언어론에 대한 마지막 포스팅이다. 이 포스팅에서는 이전 포스팅에서 알아본 객체지향 언어의 핵심 기능인 캡슐화, 상속, 다형성 중 상속 기능에 대해 알아보자. 이 블로그에 있는 디자인 패턴 포스팅을 몇 개 살펴봤다면 상속 기능에 대해서는 다들 알 것이다. 상속 기능을 이용하면 새로운 클래스를 정의할 때 기존 클래스를 상속받아 새로운 클래스를 정의할 수 있으며, 여기서 기존 클래스는 부모 클래스(parent class)이며 새로운 클래스는 자식 클래스(child class)이다. 이때, 부모 클래스는 슈퍼 클래스(super class), 자식 클래스는 서브 클래스(sub class)라고도 부른다. 상속을 이용해 자식 클래스를 새로 정의하면 자식 클래스는 부모 클래스의 멤버 변수, 메소드를 상..
[프로그래밍 언어론] 객체지향 언어
·
CS/프로그래밍 언어론
객체지향 언어 객체지향 언어의 시작은 Simula - 67로 실세계의 객체를 표현하고 이들 사이 상호작용을 시뮬레이션하기 위한 언어로 개발되었다. 이후 Smalltalk라는 순수 객체지향 언어가 개발되었으며 C에 클래스, 상속, 가상 함수, 추상 클래스, 예외 처리 기능이 추가된 C++ 언어가 등장하였다. 이후 Java라는 강력한 객체지향 언어가 등장하였다. 객체지향 언어의 목적은 실생활의 객체를 프로그램으로 표현하고 이들 사이의 상호작용을 시뮬레이션하기 위함이었다. 객체지향 언어의 객체는 실세계의 사물 / 물체를 나타내는 데 사용된다. 객체란 그 객체의 속성(attribute)와 객체의 행동(behavior)로 이루어진다. 속성은 객체의 상태 / 데이터를, 행동은 이 객체가 할 수 있는 연산 / 동..
[객체지향설계 & 패턴] 데코레이터 패턴
·
CS/객체지향설계 & 패턴
개요 Decorate는 '장식하다'라는 뜻의 동사인데, 이것의 파생형 Decorator는 '장식자'라는 뜻이다. 이번에 알아볼 데코레이터 패턴은 객체를 장식하는 패턴인데, 여기서 장식은 '기능을 추가한다'라고 생각하면 더 이해하기 편하다. 데코레이터 패턴 데코레이터 패턴의 등장 구성 요소는 Component, ConcreteComponent, Decorator, ConcreteDecorator로 총 4가지이다. Component는 기능을 추가할 때 핵심이 되는 역할로 API만 정의하고 여기서 정의한 API는 ConcreteComponent에서 구현한다. 장식자 Decorator는 Component와 동일한 API를 가지고, Component를 인스턴스로 가진다. 구체적인 장식자 Concrete Decor..