Implementation 알고리즘? 문제를 풀기 위한 머릿속 알고리즘을 코드로 작성하는 과정을 구현이라한다. 사실 모든 알고리즘 문제는 코드를 통한 해결이기에 모든 범주를 포함하는 유형이다. 논리적 사고를 판단할 수 있는 가장 기본 난이도 문제로 그리디와 같이 1~2번 문제로 자주 출제 문제유형 : 풀이를 떠올리기는 쉽지만, 코드구현이 복잡하거나 어려움. -> 문법 또는 경험이 요구된다. 피지컬을 요구하는 문제이다. -> 피지컬 : 문법에 능숙하고 코드를 빠르게 작성하는 것 완전탐색, 시뮬레이션 문제가 포함될 수 있다. -> 완전탐색 : 모든 경우를 다 계산하는 해결방법 -> 시뮬레이션 : 문제에서 요구되는 알고리즘을 한 단계식 직접 수행 구현하기 어려운 문제? 간단한 알고리즘이지만 구현 시 코드가 길..
Greedy 알고리즘? 어떠한 문제가 주어질 때 단순 무식하게, 탐욕적으로 문제를 푸는 알고리즘 탐욕적 : 현재 상황에서 지금 당장 좋은 것만 고르는 방법 현재 선택이 이후에 미칠 영향에 대해서 고려하지 않는다 문제 출제 폭이 넓다 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 창의력을 요구 가장 좋은 것을 선택하는 알고리즘으로 문제에서 '가장 큰 순서대로', '가장 작은 순서대로' 같은 기준을 슬며시 제시 정렬 알고리즘과 짝을 이루어 자주 출제된다. 그리디 알고리즘의 정당성 ? 모든 알고리즘 문제에 적용할 수 없다. 탐욕적으로 문제에 접근했을 때 해를 구할 수 있다는 보장이 있을 시 매우 효과적이고 직관적이다. 문제 해법을 찾을 때 정당성을 검토해야한다. 문제 풀이를 위한 최소한의 아이디어를 떠..
PriorityQueue ? - Queue 인터페이스 구현체 중 하나로 순서와 상관없이 우선순위가 높은 순으로 꺼내진다. - 저장공간으로 배열을 사용하며, 각 요소를 '힙(heap)'이라는 자료구조의 형태로 저장 ** 힙: 이진트리의 한 종류로 가장 큰 값이나 가장 작은 값을 빠르게 찾을 수 있는 특징이있다. : JVM 힙 영역 X Queue pq = new PriorityQueue(); pq.offer(3); pq.offer(1); pq.offer(4); pq.offer(5); pq.offer(2); Object obj = null; while((obj = pq.poll()) != null){ System.out.println(obj); } //== 출력 결과 ==// 1 2 3 4 5 다음 출력결과에..
LikedList 등장 ? 기존에 배열은 구조가 간단하며 연결되어 있기에 조회 속도가 빠르다는 장점이 있다. 그러나 상황에 따른 다음과 같은 단점이 존재한다. 배열은 크기가 고정되면 변경할 수 없다. 비순차적인 위치 데이터를 삭제/추가하려면 배열 안에 요소들의 이동이 발생한다. LikedList는 Array에 이와같은 단점을 보완하기 위하여 나왔다. LikedList란 ? LikedList는 객체를 사용하여 내부적으로 값과 다음 객체의 주소를 갖고 있기에 실제로 물리적인 연결이 아닌 주소 값을 참조함으로 논리적인 연결형태의 List형 자료구조이다. 이와같은 LikedList에서 데이터를 추가/삭제하기 위해서는 데이터의 순서에 따른 객체 사이의 참조를 변경함으로 비순서적인 데이터 추가 / 삭제에 유연하게 ..
ArrayList 특징 ? List 인터페이스의 구현체 👉 순서가 보장 O , 중복 데이터 허용 O 기존 Vector(=호환성을 위해 남김)와 구현원리, 기능이 동일하기에 ArrayList를 사용하자 Object배열을 이용해서 데이터를 순차적으로 저장한다. 👉 위치 값을 사용할 수 있기에 대상 객체 지정하여 다루기 편하다. 배열의 공간이 부족 시 새로운 크기의 배열에 기존 배열을 복사 후 저장 👉 추가하는 부분에서 비용이 발생할 수 있다. ArrayList 기능 ? 형태 메서드 설명 생성자 ArrayList() 크기 10인 ArrayList 생성 ArrayList(Collection c) 기존의 컬렉션을 담은 ArrayList 생성 ArrayList(int initialCapacity) 초기용량을 지정하..
대표적인 알고리즘 사이트로 백준, 프로그래머스, leetcode 등이 있으며, 초반부터 알고리즘 문제를 풀다보면 항상 마주치는 문제들이 있는데, 그 중 하나로 최소공배수, 최대공약수를 구하는 문제이다. 나의 경우는 항상 시간이 지난 후 해당 문제를 접하게 되면 기억이 나지를 않고 수학적인 부분을 고려해야 하다보니 거부감이 반복적으로 들어서 이번에 한번 차근차근 정리하고 넘어가보려고 한다. 최대공약수? 두 개 이상의 수가 공통으로 갖고 있는 수 중에서 가장 큰 수 위와같이 수를 더 이상 나누어지지 않을 때까지 나눌 시 나누는데 사용했던 모든 수를 곱하면 최대공약수가 된다. 24 : 2^3 x 3 -> 1 2 3 4 6 8 12 24 18 : 2 x 3^2 -> 1 2 3 6 9 18 최대 공약수 : 6 최..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.