Algorithm

    Java-알고리즘 ( Recursive, Dynamic Programming )

    재귀 고급 정렬 알고리즘에서 재귀 용법을 사용하므로, 고급 정렬 알고리즘을 익히기 전에 재귀 용법을 먼저 익혀야 한다. 함수 안에서 동일한 함수를 호출하는 형태 여러 알고리즘 작성시 사용되므로, 익숙해져야함. 간단한 예제 // src/com.company/Main.java package com.company; import java.util.ArrayList; import java.util.List; public class Main { public static Integer[] dp = new Integer[100]; static Integer recursiveFunction(Integer targetNumber) { if(targetNumber < 0) { return 0; } if(targetNumbe..

    Java-알고리즘 ( insertion sort )

    1. 삽입 정렬 (insertion sort)란? 삽입 정렬은 두 번쨰 인덱스부터 시작 해당 인덱스(key 값)앞에 있는 데이터(B)부터 비교해서 key 값이 더 작으면, B 값을 뒤 인덱스로 복사 이를 key값이 더 큰 데이터를 만날때까지 반복, 그리고 큰 데이터를 만난 위치 바로 뒤에 key값을 이동 2. 어떻게 코드로 만들까? 알고리즘 연습 방법에 기반해서 단계별로 생각해봅니다. 데이터가 네 개 일때 (데이터 갯수에 따라 복잡도가 떨어지는 것은 아니므로, 네 개로 비교 로직을 이해해보자) 예: dataList: [9, 3, 2, 5] 처음 한번 실행하면, key값은 9, 인덱스(0) - 1 은 0보다 작으므로 끝: [9, 3, 2, 5] 두 번째 실행하면, key값은 3 9보다 3이 작으므로 자..

    Java-알고리즘 ( selection sort )

    1. 선택 정렬 (selection sort) 란? 다음과 같은 순서를 반복하며 정렬하는 알고리즘 주어진 데이터 중, 최솟값을 찾음 해당 최소값을 데이터 맨 앞에 위치한 값과 교체함 맨 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 반복함 2. 선택 정렬을 어떻게 구현하면 좋을까? 데이터가 세 개 일떄 예: dataList = [9, 1, 7] 처음 한번 실행하면 1, 9, 7 이 됨 두 번쨰 실행하면 1, 7, 9가 됨 데이터가 네 개 일떄 예: dataList = [9, 3, 2, 1] 처음 한번 실행하면 1, 3, 2, 9 가 됨 두 번쨰 실행하면 1, 2, 3, 9 가 됨 세 번째 실행하면, 변화 없음 3. 알고리즘 구현 // src/com.company/Sort/SelectionSort.ja..

    Java-알고리즘 ( bubble sort )

    0. 알고리즘 연습 방법 알고리즘을 잘 작성하기 위해서는 잘 작성된 알고리즘을 이해하고, 스스로 만들어봐야 함 모사! 그림을 잘 그리기 위해서는 잘 그린 그림을 모방하는 것부터 시작 연습장과 펜을 준비합니다 알고리즘 문제를 읽고 분석한 후에, 간단히 테스트용으로 매우 간단한 경우부터 복잡한 경우 순서대로 생각해보면서, 연습장과 펜을 이용하여 알고리즘을 생각해봅니다. 가능한 알고리즘이 보인다면, 구현할 알고리즘을 세부 항목으로 나누고, 문장으로 세부 항목을 나누어서 적어봅니다. 코드화하기 위해, 데이터 구조 또는 사용할 변수를 정리하고, 각 문장을 코드 레벨로 적습니다. 변수가 코드에 따라 어떻게 변화하는지 손으로 적으면서, 임의 데이터로 코드가 정상 동작하는지를 연습장으로 펜으로 검증합니다. 1. 버블 ..