본문 바로가기
728x90
반응형

Programming150

[JAVA/자료구조] Queue Interface Queue 선입선출(FIFO) '대기열'을 뜻함 시간 순으로 어떤 작업 또는 데이터를 처리할 필요가 있는 것들은 큐의 성질을 갖고 있다. 대표적으로 알고리즘에서는 BFS(너비 우선 탐색)에 사용된다. 자바에서 제공하고 있는 큐는 인터페이스에 불과하고, 큐를 구현하는 클래스는 크게 세 가지가 있다. PriorityQueue(우선순위 큐), ArrayDeque(배열 양방향 큐), LinkedList(연결리스트) Queue Interface에 선언된 대표적인 메소드 java에서는 Vector클래스를 상속받다보니 아래의 클래스보다 훨씬 많은 메소드를 지원한다. 메소드 리턴 타입 설명 offer(E e) boolean 큐의 마지막에 요소를 추가한다. poll() E 큐의 첫번째 요소를 제거하고 제거된 요소를 반환.. 2021. 8. 19.
[JAVA/자료구조] Stack 구현 https://prinha.tistory.com/entry/JAVA%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Stack-Interface [JAVA/자료구조] Stack Interface Stack 후입선출(LIFO) 한 번쯤, StackOverflowError를 마주할 수 있는데 재귀가 깊어지면서 발생한 오류이다. 메소드를 호출할 때마다 메소드 내에 정의된 변수들의 값이 Stack내에 쌓이게 되는데, 재귀가 prinha.tistory.com Stack Interface Source 더보기 package Interface_form; /** * * 자바 stack Interface입니다. * StackInterface는 Stack에 의해 구현됩니다. * * @author st_lab.. 2021. 8. 9.
[JAVA/자료구조] Stack Interface Stack 후입선출(LIFO) 한 번쯤, StackOverflowError를 마주할 수 있는데 재귀가 깊어지면서 발생한 오류이다. 메소드를 호출할 때마다 메소드 내에 정의된 변수들의 값이 Stack내에 쌓이게 되는데, 재귀가 깊어지면 Stack 메모리에 이 값들이 쌓이면서 총량이 할당된 메모리 양보다 커질 때 내뱉게 된다. Stack의 활용 1) 페이지 뒤로가기, 실행 취소 가장 최근에 방문했던 페이지가 가장 상단에 위치함, 실행 취소 또한 마찬가지다. 2) 수식 괄호 검사 여는 괄호가 있으면 닫는 괄호 또한 반드시 있어야 한다. 어느 하나라도 부족하거나 많을 경우 수식을 완성할 수 없다. Stack Interface에 선언된 대표적인 메소드 java에서는 Vector클래스를 상속받다보니 아래의 클래스보.. 2021. 8. 9.
[JAVA 자료구조] Doubly LinkedList (이중 연결리스트) Doubly LinkedList 단일 연결리스트와 달리 '이전 노드'를 가리키는 변수가 추가된 양방향 리스트 - 단일 연결리스트에 비해 검색(색인) 능력이 좋아진다. - 이전 노드를 가리키는 변수를 갖고 있기 때문에 tail부터 탐색할 수 있다. (좀 더 효율적) 더보기 package Interface_form; /** * * 자바 List Interface입니다. * List는 ArrayList, SinglyLinkedList, DoublyLinked에 의해 각각 구현됩니다. * * @author st_lab * @param the type of elements in this list * * @version 1.0 * */ public interface List { /** * 리스트에 요소를 추가합니다.. 2021. 8. 9.
[JAVA 자료구조] Singly LinkedList (단일 연결리스트) Singly LinkedList 배열이 아닌 '노드'를 이용하여 여러 노드를 하나의 체인처럼 단방향으로 연결한 리스트 (위 그림에서 각각의 레퍼런스 변수는 다음 노드객체를 가리키고 있음) 이미지 출처 : https://st-lab.tistory.com/167 더보기 package Interface_form; /** * * 자바 List Interface입니다. * List는 ArrayList, SinglyLinkedList, DoublyLinked에 의해 각각 구현됩니다. * * @author st_lab * @param the type of elements in this list * * @version 1.0 * */ public interface List { /** * 리스트에 요소를 추가합니다. *.. 2021. 8. 5.
[JAVA 자료구조] ArrayList ArrayList Object[] 객체 배열을 사용하는 자료구조로 사이즈를 정하지 않고 동적으로 활용할 수 있다. 리스트 계열 자료구조는 데이터 사이에 빈 공간을 허락하지 않는다. 더보기 package Interface_form; /** * * 자바 List Interface입니다. * List는 ArrayList, SinglyLinkedList, DoublyLinked에 의해 각각 구현됩니다. * * @author st_lab * @param the type of elements in this list * * @version 1.0 * */ public interface List { /** * 리스트에 요소를 추가합니다. * * @param value 리스트에 추가할 요소 * @return 리스트에서 .. 2021. 8. 4.
[JAVA 자료구조] List Interface (리스트 인터페이스) 배열 vs List 인터페이스 공통점 1. 동일한 특성의 데이터타입을 묶는다. 2. 반목문내에 변수를 이용하여 하나의 묶음 데이터들을 모두 접근할 수 있다. 차이점 - 배열 1. 처음 선언한 배열의 크기는 변경할 수 없다. 정적 할당(static allocation) 2. 메모리에 연속적으로 나열되어 할당된다. 3. 인덱스에 위치한 하나의 데이터를 삭제하더라도 해당 인덱스는 빈공간으로 남는다. 차이점 - 리스트 1. 리스트의 길이가 가변적이다. 동적 할당(dynamic allocation) 2. 데이터들이 연속적으로 나열된다. (메모리에 연속적으로 나열되지않고 데이터들은 주소로 연결되어있음. ex.C의 포인터) 3. 데이터 사이에 빈 공간을 허용하지 않는다. 장점 1. 데이터의 크기가 정해져있을 경우 메.. 2021. 8. 4.
[Algorithm] 정렬 알고리즘 요약 정리 선택정렬 - 정렬되지않은 데이터 중 순차적으로 가장 작은 수를 선택하고 교환해나가는 정렬 - 장점 : 정렬을 위한 비교 횟수는 많으나 교환 횟수는 상당히 적다는 것이 장점 (풀스캔) - 단점 : 데이터의 개수가 조금만 많아지더라도 아주 많은 연산을 해야하기때문에 오래걸림 - 시간복잡도 : O(N^2) - 연산법 : N*(N+1) / 2 public class sortAl { /** * 알고리즘 * * * 1. i = 0 * * * 2. i부터 N-1까지 가장 크거나 작은값을 찾는다. * * * 3. i와 가장 크거나 작은값을 교환한다. 동일한 값일 경우 교환하지 않는다. * * * 4. ++i * 5. 2부터 다시 반복한다. */ int value[] = {5, 3, 8, 2, 10, 9, 4, 1}; .. 2021. 8. 1.
[Algorithm] 시간 복잡도 & Big-O표기법 시간복잡도(Time Complexity) 특정 알고리즘이 문제를 해결하는데 걸리는 시간 정확한 값을 산출하는 것이 아니라 근사치를 계산한다. 점근적 표기법 - 시간복잡도를 나타내는데 사용됨 1) 최상의 경우 : 오메가 표기법(Big-Ω Notation) 최적의 입력을 한 상태에서 작업을 완료하는데 가장 빠른 시간 2) 평균의 경우 : 세타 표기법 (Big-θ Notation) 여러가지 다른 경우의 수를 입력하여, 총실행시간을 계산하고 시행횟수로 나눈다. 3) 최악의 경우 : 빅오 표기법 (Big-O Notation) 최악의 입력을 한 상태에서 작업을 완료하는데 가장 느린 시간 -> 평균인 세타 표기법을 사용하면 좋겠지만 평가하기가 까다로워 최악의 경우인 빅오를 많이 사용한다. Big-O 표기법 - 점근적.. 2021. 7. 30.
[Algorithm] 공간 복잡도 공간복잡도(Space Complexity) 프로그램이 얼마나 많은 공간(메모리)를 차지하느냐를 분석하는 방법 공간복잡도 빅-오 계산법 1) 일반적으로 공간이 하나씩 생성되는 것을 1이라고 표현함 아래의 공간복잡도는 O(1) int a = 5; 2) 반복문에서의 지역변수 사용시 n값에 상관없이 공간복잡도는 O(1) 반복문이 N번만큼 반복하여도 for문 안에서의 지역변수이므로 다른 것에 영향 X int f(int n) { int i = 0; int result = 1; for(i = 1; i 1) return n * factorial(n -1); else return 1; } 프로그램에 필요한 공간은 고정, 가변 공간으로 나눌 수 있다. 시간적인 측면을 무시하고 공간복잡도만을 생각한다면 고정 공간보다는 가변.. 2021. 7. 30.
[Network] NFS설정 - Windows10 & Linux(Ubuntu) 네트워크 드라이버 연결 (2) / 네트워크 드라이브가 연결이 안되는 오류 해결 - 방화벽 환경 https://prinha.tistory.com/entry/Network-NFS%EC%84%A4%EC%A0%95-Windows10-LinuxUbuntu-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84-%EC%97%B0%EA%B2%B0 [Network] NFS설정 - Windows10 & Linux(Ubuntu) 네트워크 드라이버 연결 (1) NFS (Network File System) 원격지 PC의 파일을 로컬 PC에 있는 것처럼 사용할 수 있는 파일시스템 NFS_Server가 파일을 공유하면 NFS_Client가 공유된 디렉토리를 마운트하여 파일을 사용하는 방식 *보안을 크 prinha.tistory.com 저번에 구.. 2021. 7. 30.
[Network] 인터넷 연결 진단 방법 - ping 테스트 Ping(Packet Internet Groper) 컴퓨터 네트워크 상태를 점검, 진단하는 명령어 ping을 보내는 대상 컴퓨터에 일정 크기의 패킷을 보낸 후 ping에 대해 응답하는 메시지를 보내면 이를 수신받아 대상 컴퓨터가 동작하는지, 네트워크 상태가 정상적인지 분석할 수 있다. (ex. 공유기에 ping을 날려 주고받은 패킷의 손실률을 파악하여 인터넷의 연결 상태를 진단할 수 있음) ping ip주소 ping 192.168.0.1 1. PC -> 공유기 연결 테스트 공유기 IP 주소 : ipconfig명령어를 통해 '무선 LAN 어댑터 Wi-Fi'의 기본 게이트웨이 IP주소를 얻을 수 있음 2. 공유기 -> pc 연결 테스트 고정적인 IP주소를 가진곳으로 테스트 SK DNS : 219.250.36.. 2021. 7. 30.
728x90
반응형