목록2017/11 (19)
Inor
- Casting 캐스팅은 프로그래밍 언어에서 자료형을 변환하는 연산입니다. 캐스팅 연산이라고 부르며 자바에서 2번째로 높은 연산 우선순위를 갖고 있습니다. 캐스팅 연산은 기본형 변수(int, double 등), 참조형 변수(객체를 참조하는 변수)에서 사용 가능합니다. 같은 종류의 변수끼리 캐스팅이 가능하고 기본형과 참조형 사이에는 캐스팅 연산이 불가능합니다. 캐스팅 연산이 중요한 이유 중 하나는 객체지향 프로그래밍(OOP) 특성인 다형성과 관련되어있기 때문입니다. 이 글에서는 기본형이 캐스팅 되는 과정을 보며 캐스팅 연산의 특징을 알아보겠습니다. 이후 다른 글에서 업 캐스팅과 다운 캐스팅을 알아보며 참조형 변수에서 캐스팅이 실행되는 과정을 학습하고 다형성이 어떻게 실현되는지 알아보겠습니다. - 기본형 ..
- String String은 문자열을 나타내는 클래스 입니다. 자바에서 가장 자주 사용되는 클래스 중 하나 입니다. 그러나 String 클래스의 특징을 제대로 이해하지 못하고 사용하는 사람들이 많다고 생각합니다. JVM이 메모리 영역에 String 객체를 할당하는 방법을 보면 String 객체가 갖고있는 특성을 이해할 수 있습니다. - String 객체 생성 String 클래스를 이용해서 String 객체를 생성하는 방법이 몇 가지 있는데, 각 방법을 살펴보겠습니다. 아래와 같은 코드가 있고 "StringA" 문자열을 만드는 방법들입니다. 다음과 String을 6번 만드는 시도를 했을때 과연 JVM에서 몇개의 객체를 Heap 영역에 생성해주는지 생각해 보시길 바랍니다. 아래 출력 코드는 각 참조객체 H..
- 문제 : https://www.acmicpc.net/problem/11052 남은 붕어빵을 세트로 판매하는 문제입니다. 세트를 어떻게 나누어야지 이윤을 가장 많이 남길 수 있는지 풀어야됩니다. 이전 값이 다음 값에 영향을 줄 수 있기(memoization) 때문에 DP로 풀었습니다. - 풀이 먼저 하나의 경우를 만들고 각각을 분류하며 풀었습니다. 경우를 나열해본 결과 D[N]을 구하기 위해 D[N]부터 D[1]까지 적절하게 더해주며 결과를 도출했습니다. D[N]을 구하기 위해 먼저 N개의 붕어빵 세트를 만들었을때 값을 D[N]에 넣어줬습니다. 그리고 나머지 값들과 비교해줬습니다. D[N] < D[N-j] + D[N-(N-j)]로 비교하면 N보다 작은 값 중에 가장 큰 값과 가장 작은 값을 차례로 비교..
- Generic Generic은 클래스 내부에서 사용할 변수의 형태를 외부에서 지정하는 방법입니다. 주로 멤버 변수의 타입이나 메소드 반환 타입을 외부에서 지정해줄때 사용합니다. Generic을 사용 할때 개발자가 얻는 장점이 있습니다. 이 글에서는 장점을 중심으로 Generic의 기초적인 사용법을 알아보도록 하겠습니다. - 사용법 class Box { T item; public Box(T item) { this.item = item; } } public class mGeneric { public static void main(String[] args){ Box mBox = new Box(new String("선물")); } } 기본 적인 사용법은 위의 코드와 같습니다. Box 클래스를 정의했고 mai..
- 퀵 정렬 퀵 정렬은 이름대로 매우 빠른 정렬 알고리즘에 속합니다. 퀵 정렬은 최악인 경우 O(n^2), 보통인 경우 O(nLogn)의 시간 복잡도를 갖고있는 정렬 알고리즘입니다. 최악인 경우는 정렬이 완료된 상태에서 정렬을 시도하면 발생합니다. 최악인 경우가 발생하는 경우를 살펴보기에 앞서, 퀵 정렬이 어떤 방식으로 동작하는지 알아보겠습니다. 퀵 정렬은 분할/정복 방식으로 인자들을 정렬합니다. 분할하는 방식은 Pivot 값을 기준으로 기준보다 작은 값과 큰 값을 분류하고 정렬합니다. Pivot은 정렬 인자들 중에 프로그래머가 임의로 선정한 값입니다. 저는 배열에서 가장 오른쪽에 있는 값을 Pivot으로 선정했습니다. 이렇게 말로 설명하기보다 배열이 단계별로 어떻게 변화하는지 직접 확인하며 학습해보겠습..
- OSI 7 계층 (OSI 7 Layer) OSI 7 계층은 서로 다른 두 기기간의 통신을 위해 표준화된 통신 프로토콜입니다. 프로토콜은 일종의 규약입니다. 표준화된 규약이 없다면 기기마다 호환성을 보장해줘야하는 불필요한 작업이 발생합니다. 이 문제는 아이폰과 안드로이드폰의 충전 케이블이 달라서 발생하는 문제와 비슷합니다. 아이폰 충전을 위해서 안드로이드 충전 케이블에 변환 잭을 사용하거나 아이폰 전용 케이블로 교체를 해야합니다. OSI 7 계층은 총 7개의 계층으로 구성되고 각 계층은 서로 독립적으로 모듈화되어 개발 됐습니다. 모듈화되어있기 때문에 통신 장애가 발생하면 계층별로 문제 해결이 가능합니다. 아래부터 쌓아 올라가는 스택 모형으로 구현되고 일반적으로 하위 계층은 하드웨어, 상위 계층은 소프트..