본문 바로가기

반응형

전체 글

(209) GITHUB 방명록
[알고리즘] 분할 정복(Divide and Conquer) 알아보기 개발/DS&Algorithms / 2022. 5. 10. 안녕하세요😎 백엔드 개발자 제임스입니다 :) 이번 포스팅은 분할 정복에 대해서 정리하도록 하겠습니다. 저번 시간 정리했던 동적 계획법과 유사하게 어떠한 문제를 해결하는 방법인데요. 아래에서 자세하게 알아보겠습니다. 분할 정복(Divide and Conquer) 알고리즘 분할 정복 알고리즘은 어떠한 문제를 작은 문제로 더 이상 나눌 수 없을 때까지 분할하여 문제를 해결하는 방법입니다. 자세하게는 분할된 작은 단위의 문제들을 각각 풀면서 다시 합병하여 답을 구하는 것입니다. 대표적인 예로는 정렬 알고리즘 중에서 퀵 정렬(Quick sort), 합병 정렬(Merge sort), 이진 탐색(Binary search), 선택 문제, 고속 푸리에 변환(FFT) 문제가 대표적입니다. * 분할 정복과 동적 계획법의 차..
[JAVA 파헤치기] Arrays, System.arraycopy 를 활용하여 배열 다루기 개발/Java / 2022. 5. 9. 안녕하세요😎 백엔드 개발자 제임스입니다 :) 오늘은 프로그래밍의 기초 개념인 배열에 관해서 포스팅하려고 합니다. 포스팅하기 전에! 이번 포스팅은 배열의 기본적인 개념을 알고 있다는 가정하에 정리했음을 미리 알립니다. 따라서 이번 주제는 [배열 다루기] 입니다! :) 배열을 다루는 방법은 굉장히 많은데요. 그중에서 Arrays와 System.arraycopy에 대해서 설명하겠습니다. 여기서 배열을 다룬다는 의미는 배열을 복사하거나 추가, 삭제 등 다양한 기능을 의미합니다. 이제 자세하게 설명을 하도록 하겠습니다. 1. System.arraycopy() arrayclass는 이름 그대로 배열을 복사하는, System 클래스의 메서드입니다. 해당 메서드는 반환을 하지 않는 void입니다. void arrayc..
[알고리즘] 동적 계획법(Dynamic Programming) 알아보기 개발/DS&Algorithms / 2022. 5. 7. 안녕하세요😎 백엔드 개발자 제임스입니다 :) 이번에는 동적 계획법과 관련해서 포스팅하려고 합니다. 사실 동적 계획법은 어떠한 문제를 풀기 위한 전략 또는 기법에 가깝습니다. 따라서 추후 알고리즘을 다룰 때 해당 기법을 응용하여 개념을 정의하는 경우가 종종 있습니다. 이제 자세하게 알아보도록 하겠습니다. 동적계획법(Dynamic Programming, DP) DP라고도 불리는 동적 계획법은 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 각 결과들을 저장한 뒤, 다시 큰 문제를 해결하는 방법입니다. 이것을 '상향식 접근법'이라고 하며, 가장 최하위 해답을 구한 후 이것을 활용하며, 상위 문제를 풀어가는 의미입니다. 캐시(cache) : 이미 계산한 값을 저장해 두는 메모리 중복되는 부분 문제(overla..
[JAVA 파헤치기] 문자 타입 'char' 와 문자열 'String' 의 진실 개발/Java / 2022. 5. 6. 안녕하세요😎 백엔드 개발자 제임스입니다 :) 자바 언어를 공부하기 시작하신 분이라면, 자료형에 대해서 배웠을 것입니다. 주로 자료형 또는 데이터 타입이라고 부르는데요. 변수에 담길 값의 형태를 나타내 주는 중요한 개념입니다. 이러한 자료형에는 다양한 종류와 명칭이 있습니다. 포스팅을 시작하기 전에 기본 타입 자료형에는 어떤 종류가 있는지 알아보도록 하겠습니다. 기본 타입(Primitive type) 데이터의 실제 값을 의미 정수 타입, 실수 타입, 문자 타입, 논리 타입으로 분류 위 그림에서 보이는 내용들이 기본 타입에 해당합니다. 이제 오늘 포스팅 주제를 소개하겠습니다. 이번 포스팅은 문자 타입의 char와 문자열을 나타내는 String에 대해서 자세하게 정리하고, 두 가지를 비교해보려고 합니다. 평소..
[알고리즘] 재귀 용법(recursive call, 재귀 호출) 알아보기 개발/DS&Algorithms / 2022. 5. 2. 안녕하세요😎 백엔드 개발자 제임스입니다 :) 오늘은 재귀 용법 또는 재귀 호출에 대해서 포스팅하려고 합니다. 이 재귀 용법은 어떻게 보면 중요한 개념인데요. 앞으로 알고리즘을 학습하다 보면 굉장히 많이 접하기 때문입니다. 이제 자세하게 알아보도록 하겠습니다. 재귀 용법 (recursive call, 재귀 호출) 재귀는 자기 자신을 참조하는 것 함수 안에서 동일한 함수를 호출하는 형태 '재귀 함수'라고도 함 코드의 가독성이 좋음 스택 메모리 사용 예시 형태 public int sum(int num) { * * // 생략 * return sum(num-1); } 위 코드 내용처럼 함수 안에서 자신을 호출하는 방식입니다. 단, 재귀 함수를 사용할 때 호출시마다 입력값(파라미터)은 변합니다. 그리고 위 코드에서..
[알고리즘] 삽입 정렬(Insertion sort) 알아보기 개발/DS&Algorithms / 2022. 4. 26. 안녕하세요 🌟🌟 오늘 포스팅할 내용은 정렬 알고리즘 중, [삽입 정렬]입니다. 이번에도 역시 [버블 정렬], [선택 정렬]과 비슷한 방식으로 진행되고, 마찬가지로 구현이 어렵지 않습니다. 이제 삽입 정렬에 대해서 자세하게 알아보도록 하겠습니다 :) * 다양한 정렬 알고리즘 1. 버블 정렬 2. 선택 정렬 3. 삽입 정렬 4. 병합 정렬 5. 퀵 정렬 6. 힙 정렬 삽입 정렬(Insertion Sort) 이미 정렬된 상태에서 새로운 요소를 추가하여 비교한 후, 재정렬하는 방식 손 안의 카드를 정렬하는 방법과 유사 01. 그림으로 방식 이해하기 어센딩 방식을 예시로 들었습니다. 아래 [9, 1, 4, 2, 7]을 가진 배열이 있습니다. 1) 정렬을 하기 위해서 먼저 인덱스 1번 데이터를 인덱스 0번의 데이터..

반응형