Study/Alogorithm 11

[알고리즘] 자료구조 LinkedList

LinkedList 구현을 위해 노드클래스를 생성하고, `노드 추가, 노드 삭제, 노드 출력` 메소드를 생성하였다. main 메소드안에서는 노드클래스를 테스트하는 코드를 작성하였다. 아래의 코드는 첫번째 노드를 삭제할수 없는 한계가 있지만, 기본적으로 노드클래스를 생성하고 기본적인 기능의 이해를 돕는다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 public class Example { public static void main(String[] args) { Syst..

Study/Alogorithm 2020.05.11

[알고리즘][코딩 인터뷰 완전 분석 정리] 03 스택과 큐

스택 구현하기 LIFO (Last In First Out)에 따라 자료를 배열함. 접시를 쌓아두는 것과 비슷한 구조 스택 연산 pop() : 스택에서 가장 위에 있는 항목을 제거함. push(item) : item 하나를 스택의 가장 윗 부분에 추가함. peek() : 스택의 가장 위에 있는 항목을 반환. isEmpty() : 스택이 비어 있을때에 true를 반환. 배열과 달리 상수 시간에 i번째 항목에 접근할 수 없다.하지만 스택에서 데이터를 추가하거나 삭제하는 연산은 상수시간에 가능함. 배열처럼 원소들을 하나씩 옆으로 밀어줄 필요가 없다. 재귀알고리즘을 사용할 때 유용하게 사용가능. 큐 구현하기 FIFO(First In First Out)에 따라 자료를 배열. 매표소 앞에 서 있느 사람들이 움직이는 ..

Study/Alogorithm 2020.05.09

[알고리즘][코딩 인터뷰 완전 분석 정리] 02 연결리스트

연결리스트 개요 차례로 연결된 노드를 표현해주는 자료구조. 다음 주소값을 가지고 있는 데이터 구조. 단방향/양방향 연결리스트 속도가 느릴 순 있다. K번째 원소를 찾고 싶다면 처음부터 K번 루프를 돌아야함. 장점은 리스트의 시작 지점에서 아이템을 추가하거나 삭제하는 연산을 상수 시간에 할 수 있다. 길이가 정해지지 않은 데이터를 핸들링할때는 OK (cf . 배열은 크기가 정해져 있다.) 연결리스트 만들기 LinkedList 구조를 사용하지 않고 연결리스트에 접근할 때 head 노드의 주소를 참조하는 방법. Class Node{ Node next = null; int data; public Node(int d){ data = d; } void appendToTail(int d){ Node end = new..

Study/Alogorithm 2020.05.07

[알고리즘][코딩 인터뷰 완전 분석 정리] 01 배열과 문자열

해시 테이블 효율적인 탐색을 위한 자료구조로서 키(key)를 값(value)에 대응시킴. 해시테이블 구현방법 연결리스트(linked list)와 해시코드(hash code function)함수 같이 사용. 키(문자열 혹은 다른 어떤 자료형도 가능)와 값을 해시테이블에 넣을때 과정 처음엔 키의 해시코드를 계산. 키의 자료형은 보통 int 혹은 long. 키의 갯수는 무한한데 반해 int의 개수는 유한하기 대문에 서로 다른두개의 키가 같은 해시 코드를 가리킬수 있다. 그다음엔 hash(key) % array_length와 같은 방식으로 해시코드를 이용해 배열의 인덱스를 구한다. 배열의 각 인덱스에는 키와 값으로 이루어진 연결리스트가 존재한다. 키와 값을 해당 인덱스에 저장. 충돌에 대비해서 반드시 연결리스트..

Study/Alogorithm 2020.05.05

[알고리즘] 투포인트 알고리즘

개념 출처, 참고 블로그 : https://naivep.tistory.com/52 활용 문제 https://www.acmicpc.net/problem/1806 1806번: 부분합 문제 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. 출력 첫째 줄에 구하고자 하는 최소의 길 www.acmicpc.net

Study/Alogorithm 2020.04.26