전체 글
많은 객체들이 모여서 상호 협력하면서 데이터를 처리하는 방식. 프로그램을 묶음 단위로 잘게 쪼개서, 추후에 가져다 쓰기 편하게 만들어놓은 프로그래밍 방식 레고 블럭 조립하듯이 컴포넌트를 유연하고 변경이 용이하다. 반대 개념인 절차적 프로그래밍(Procedure Programming) 대표 언어 C 함수를 이용해서 작은 부품을 만들고 이것을 결합해서 더 큰 프로그램을 만들어가는 테크닉 하지만 어플리케이션이 복잡해질수록 실제 세계처럼 더 밀접한 모델링 방식이 필요했다. 그래서 서로 연관된 함수와 변수를 모아서 박스를 만들고 거기에 이름을 붙여서 정리정돈을 한 수납상자를 만들었는데 이것이 Class이다. 이런 클래스를 중심으로 프로그램의 구조를 만들어가는 프로그래밍 방법론이 객체 지향 프로그래밍이다. 객체지향..
알고리즘 문제 '나무 재테크' 백준-16235 문제를 풀다가 PriorityQueue를 이용할 일이 생겼다. 앞으로 줄여서 pq라고 하겠다. 푸는 과정에서, pq에 있는 값들을 모두 조회해야 하는 일이 발생했다. 처음에는 일반적인 반복문인 for(int i = 0; i < pq.size(); i++)를 이용해 pq.get(index)를 하려고 했다. 앞으로 fori문이라 하겠다. 하지만 pq는 get() 메서드를 가지고 있지 않았고, poll(), peek(), element() 등만 가졌을 뿐이라. 인덱스로 전체를 조회하는게 불가능하단 것을 알았다. 하지만 뭔가 향상된 for문은 될 것 같은 느낌이 들어서 이용해봤더니 pq 내부 모든 요소에 조회가 가능했다 ! 궁금증이 들었다. 그동안 fori나 for..
REST API(Representational State Transfer Application Programming Interface) - 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다. 구성 자원(Resource) - URI 행위(Verb) - HTTP METHOD 표현(Representations) : JSON, XML ,TEXT, RSS 등의 표현이 존재한다. 특징 Uniform(유니폼 인터페이스) : URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일. Stateless(무상태성) : REST는 무상태성 성격을 갖는다. 즉, 작업을 위한 상태정보를 따로 ..
상속과 메모리 구조 new ElectricCar()를 호출하면 ElectricCar 뿐만 아니라 상속 관계에 있는 Car까지 함께 포함하여 인스턴스를 생성한다. 참조값은 x001로 하나이지만 실제로 그 안에는 두 개의 클래스 정보가 공존하는 것. 상속이라고 단순하게 부모의 필드와 메서드만 물려 받는게 아니다. 상속 관계에서는 부모 클래스도 함께 포함해서 생성된다. 외부에서 볼 때는 하나의 인스턴스를 생성하는 것 같지만 내부에서는 부모와 자식이 모두 생성되고 공간도 구분된다. ==================================================================================== Car와 ElectricCar 둘 중에 호출하는 변수의 타입(클래스)를 기준으로 ..
정의 - 문제를 즉각 해결할 수 있을 때까지 재귀적으로 둘 이상의 하위 문제(sub-problem)들로 나누고(Divide) 문제를 해결한 다음(Conquer) 그 결과를 이용해 다시 전체 문제를 해결하며 합치는 방법 - 큰 문제를 작은 문제로 나누어(분할), 각각을 해결(정복)한 후, 작은 문제들의 해결 방법을 통합하여 전체 문제의 해답을 찾는 전략. 재귀적인 성질을 가지고 있다. 분할정복 방식으로 해결되는 문제들 정렬 문제 (퀵 정렬, 병합 정렬) 큰 숫자 곱하기 - n자리 수 2개를 곱하여 결과를 나타내는 알고리즘 이진 탐색 Closest Pair of Points : 모든 Point의 쌍의 거리 중 최소의 거리를 찾는 문제 Strassens's 알고리즘 : 두 행렬을 곱하는 효과적인 알고리즘 핵심..