선언형 무언가를 작업하기 위하여 어떻게 진행할 것인지를 나열하는 것을 뜻한다. 언어 : Haskell, HTML, SQL, 등... 명령형 무언가를 작업하기 위한 방법을 정의하는 것을 뜻한다. 언어 : Java, C, 등... 선언형과 명령형의 차이 선언형은 무엇을 할지를 나열하고 명령형은 어떻게 할지를 구현한다. 예 1) 컵라면을 끓이는 법 명령형 1. 뚜껑을 연다. 2. 물을 붓는다. 3. 면이 익을 때까지 기다린다. 선언형 1. 컵라면을 끓인다. 예 2) 도형을 누르면 크기를 바꾸는 기능 명령형 1. 도형을 누른다. 2. 현재 도형의 크기를 받는다. 3. 받은 도형의 크기를 변경한다. 4. 변경하고자 하는 도형의 크기를 변경한 크기로 바꿔준다. 선언형 1. 도형을 누른다. 2. 도형의 크기를 바꾼다.
Builder 패턴은 같은 타입의 인스턴스 변수가 많고 생성자를 많이 선언해야 할 때 사용하면 좋고 인스턴스 변수 중 객체 생성 시 반드시 초기화해야 할 변수가 적을 때가 좋다. 아래 설명을 보자. public class User { private String name; private String password; private int age; private int stature; private String number; private String nickname; public User(String name, String password, int age, int stature, String number, String nickname){ this.name = name; this.password = pass..
퀵 소트(quick sort) ( * 오름차순 기준 * )기준을 잡은 후 기준을 피벗이라고 하자 피벗을 제외한 숫자들을 가지고 정렬하는데 피벗 보다 작다면 왼쪽을 크다면 오른쪽으로 나눈 후 왼쪽과 오른쪽에서 다시 피벗을 잡아 다시 정렬하며 모든 정렬이 끝날 때까지 이를 반복한다. 0. 피벗을 재외한 후 두개의 비교할 값을 정한다.(편의상 l(left)와 r(right)로 칭하겠다.)1. l이 피벗보다 작고 r이 피벗보다 크다면 둘다 새로운 값을 정한다.(l과 r의 값이 같아도 동일하다.)2. l이 피벗보다 크고 r이 피벗보다 작다면 서로 값을 바꾼 후 새로운 값을 정한다.3. l이 피벗보다 작고 r이 피벗보다 작다면 l의 값만 새로 정한다.4. l이 피벗보다 크고 r이 피벗보다 크다면 r..
플로이드 워셜(Floyd Warshall) 알고리즘은 동적 계획법으로 모든 최단 경로를 구하는 알고리즘이다. 먼저 초기화를 해줘야 하는데 최단경로가 있으면 최단경로를 없으면 최댓값을 넣어주어야 한다.그래야 최단경로를 구할 수 있다. 3중 for 문으로 동작하는데 첫 for 문부터 각각 거쳐 가는 점, 출발하는 점, 도착하는 점을 나타낸다.아래 코드는 초기화를 했다는 가정하에 작성했다. class Floyd{ int len = 10; int[][] arr = new int[len][len]; void floyd(){ for(int i = 0; i < len; i++){ // 거쳐가는 점 for(int j = 0; j < len; j++){ // 출발하는 점 if(i == j){ continue; } for..
싱글톤 패턴(Singleton Pattern)이란. 어플리케이션에서 하나의 인스턴스만 만들고 싶을 때 사용하는 디자인 패턴이다. 싱글톤을 만들 때는 private 생성자를 만들어 new를 사용하여 인스턴스 만드는 것을 막고 private static final 변수에 인스턴스 생성하고 public static singleton get메소드로 인스턴스를 return하게 만들어 인스턴스가 필요할 때 get메소드로 인스턴스를 받아서 사용하게 한다. public class Singleton { private static final Singleton instance = new Singleton(); private Singleton(){} public static Singleton getInstance(){ ret..
Stack : 먼저 들어온게 나중에 나간다. (후입선출, Last In First Out, LIFO) - 예로 물건을 쌓아올린 것으로 생각하면 된다. 쌓아올린 물건들 중 원하는 물건을 꺼내기위해서는 가장 마지막에 올린 물건부터 차례대로 꺼내야 하기 때문이다. Queue : 먼저 들어온게 먼저 나간다. (선입선출, First In First Out, FIFO) - 예로 사람들이 줄을 서있는것을 생각하면 된다. 물론 새치기가 없어야 된다는 조건이 있지만 줄을 서있다는 것은 먼저온 사람이 먼저 일을 처리한 후 먼저 가기 때문이다.
- 거품 정렬(Bubble sort) ( * 오름차순기준 * ) 인접한 두 원소를 비교하여 정렬하는 방법이다. 원소의 이동이 거품이 수면으로 올라오는 모습을 보이기 때문에 지어졌다고 한다. - ex) 테이블 비교값 5, 3, 2, 1, 4 5, 3 3, 5, 2, 1, 4 5, 2 3, 2, 5, 1, 4 5, 1 3, 2, 1, 5, 4 5, 4 3, 2, 1, 4, 5 3, 2 2, 3, 1, 4, 5 3, 1 2, 1, 3, 4, 5 2, 1 1, 2, 3, 4, 5 -끝- 시간 복잡도 : O(n 제곱)
- 선택 정렬(selection sort) ( * 오름차순 기준 * ) 가장 작은 값을 찾아서 첫번째 위치에 있는 값과 교환하고, 두번째로 작은 값을 찾아 두번째 위치에 있는 값과 교환하는 방법으로 이러한 방법을 반복한다. 즉 최소값을 찾아 왼쪽으로 이동시키는데 배열의 크기만큼 반복하여 정렬하는 방법이다. - ex)테이블 최소값[9,1,6,8,4,3,2,0] 0[0,1,6,8,4,3,2,9] 1[0,1,6,8,4,3,2,9] 2[0,1,2,8,4,3,6,9] 3[0,1,2,3,4,8,6,9] 4[0,1,2,3,4,8,6,9] 6[0,1,2,3,4,6,8,9] 8 시간복잡도 : O(n 제곱)