완전탐색이란? 완전탐색이란, 모든 경우의 수를 통한 해결 방법입니다. 기본적으로는 브루트 포스(Brute Force)라고도 합니다. 상대적으로 간단한 방법이지만 경우의 수가 많으면 많아질수록 시간이 오래 걸린다는 단점이 있습니다. 그래도 직관적이어서 이해하기 쉽고 문제의 정확한 결과값을 얻을 수 있는 기초적인 방법입니다. * 경우의 수에 따라서 실행 시간이 비례할 수 있기 때문에 입력 값의 범위가 작은 경우에 유용하게 사용됩니다. 완전탐색 기법 - 코딩 테스트 가능한 모든 경우의 수, 방법을 고려해야 합니다. 해결할 문제의 가능한 만큼 경우의 수를 계산해 봅니다. 실제로 답을 구할 수 있는지 적용해 봅니다. 완전탐색 종류 탐색 알고리즘에는 선형 탐색, 이진 탐색, 완전 탐색 총 3가지 큰 분류로 나눌 수..
자료구조
배열(Array) 변수는 하나의 데이터만 저장할 수 있습니다. 그러나, 저장해야 할 데이터가 많아지면 그만큼 변수를 사용해야 합니다. 이를 해결하기 위해서 배열을 사용하면 많은 데이터를 손쉽게 처리할 수 있습니다. 배열(Array)은 메모리 상에 원소를 연속하게 배치한 자료구조입니다. 그리고 배열은 같은 탑의 변수를 담을 수 있는 고정 크기의 데이터 구조로, 메모리에 연속적으로 저장됩니다. 배열을 구성하는 각각의 값들을 배열 요소(element)라고 하며, 각 값이 저장되어 있는 위치를 인덱스(index)라고 합니다. 배열은 선언과 동시에 저장할 수 있는 타입이 결정되며, 만약에 다른 타입의 값을 저장하려고 하면 타입이 불일치하다는 컴파일 에러가 발생하게 됩니다. 그리고 배열을 한 번 생성하면 길이를 ..
코딩 테스트 문제 중에는 프로그램 실행 시간이 특정 시간 미만이어야 하는 조건이 있습니다. 일반적으로 시간은 1초를 기준으로 하며, 문제에서 주어지는 모든 형태의 입력을 처리하는 데 프로그램이 1초 이상 걸리면 안 됩니다. 시간제한이 있는 문제에서 실행 시간이 해당 제한 시간을 넘어가면 시간 초과가 발생하여 오답 처리 됩니다.하지만 효율성을 측정하는 문제의 경우 대부분 입력 크기가 매우 큽니다. 1만 개의 입력을 받는 문제를 풀 때 코드가 효율적인지 측정하기 위해 모든 입력을 직접 넣기 힘듭니다.. 이때 우리가 작성하는 코드의 실행 시간이 입력 데이터의 크기와 어떤 관계가 있는지 파악해서 그 효율성을 계산해야 합니다. 이렇게 코드 혹은 알고리즘의 실행 시간과 데이터의 상관관계를 시간 복잡도라고 합니다.시..
✏️본 게시글은 자바로 배우는 핵심 자료구조와 알고리즘을 학습한 내용을 개인적으로 학습하기 위해 정리한 글입니다. 3.1 MyArrayList 메서드 분류 3.1.1 get 메서드 구현 public E get(int index) { if (index = size) { throw new IndexOutOfBoundsException(); } return array[index]; } get 메서드에 있는 모든 것은 상수 시간입니다. 따라서 get 메서드는 상수 시간입니다. 3.1.2 set 메서드의 구현 public E set(int index, E element) { E old = get(index); array[index] = element; return old; } set 메서..
2023.03.12 - [Study/Think Data Structures] - [자바로 배우는 핵심 자료구조와 알고리즘] 1장. 인터페이스 [자바로 배우는 핵심 자료구조와 알고리즘] 1장. 인터페이스 ✏️본 게시글은 자바로 배우는 핵심 자료구조와 알고리즘을 학습한 내용을 개인적으로 학습하기 위해 정리한 글입니다. 이 책은 다음 세 가지 주제를 다룹니다. 자료구조 알고리즘 분석 정보 gyunny.tistory.com ✏️본 게시글은 자바로 배우는 핵심 자료구조와 알고리즘을 학습한 내용을 개인적으로 학습하기 위해 정리한 글입니다. 프로파일링 접근법을 통해 어떤 응용 프로그램에서 어느 클래스가 더 좋을지 둘 다 시도해 보고 각각 얼마나 걸리는지 비교하면 됩니다. 대신 몇 가지 문제점이 있습니다. 알고리즘을 ..
✏️본 게시글은 자바로 배우는 핵심 자료구조와 알고리즘을 학습한 내용을 개인적으로 학습하기 위해 정리한 글입니다. 이 책은 다음 세 가지 주제를 다룹니다. 자료구조 알고리즘 분석 정보 검색 1.1 리스트가 두 종류인 이유 Java Collections Framework를 사용하다 보면 ArrayList와 LinkedList 클래스를 헷갈릴 수 있습니다. 왜 자바는 List 인터페이스에 두 가지 구현을 제공할까? 둘 중에 어떤 것을 선택해야 할까? 예제를 통해 ArrayList, LinkedList와 유사한 클래스를 구현하고, 따라서 이들의 동작 방법과 각각의 장단점을 학습할 예정입니다. 어떤 동작은 ArrayList가 빠르거나 저장 공간을 적게 사용하고 다른 상황에서는 LinkedList가 빠르거나 메모..