분류 전체보기(61)
-
[Heap] 힙이란?
자료구조 힙(heap)이란? 완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다. 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다. 힙은 일종의 반정렬 상태를 유지한다. 힙 트리에서는 중복된 값을 허용한다. 힙(heap)의 종류 최대 힙(max heap) - 부모 노드의 키 값이 자식 노드의 키값보다 크거나 같은 완전 이진 트리 최소 힙(min heap) - 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리 힙(heap)의 삽입 힙(heap)의 삭제
2021.11.15 -
[Queue와 Stack의 차이] 큐와 스택의 개념과 차이점
😁 스택이란? 스택은 LIFO구조로 마지막에 들어온 데이터가 먼저 나가는 자료구조이다. 책을 쌓는 것 처럼 차곡차곡 쌓아 올린 형태의 자료구조를 말한다. 😊 스택의 특징 스택은 위의 사진처럼 같은 자료형의 값을 하나의 방향으로만 쌓을 수 있고, top으로 정한 곳을 통해서만 접근할 수 있다. top에는 가장 위에 있는 자료는 가장 최근에 들어온 자료를 가리키고 있으며, 삽입되는 새 자료는 top이 가리키는 자료의 위에 쌓이게 된다. 스택에서 top을 통해 삽입하는 연산을 'push', top을 통해 삭제하는 연산을 'pop'이라고한다. 따라서 스택은 시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다는 구조적 특징을 가지게 된다. 이러한 스택의 구조를 후입선출(LIFO, La..
2021.11.15 -
[ArrayList vs Linked List] 의 차이점
ArrayList와 LinkedList 둘 다 List라는 인터페이스를 구현한 Collection 구현체이다. 하지만 내부적으로 동작하는 방식은 다르다. ArrayList ArrayList는 기존 배열을 선언할 때 크기를 지정해 메모리 낭비를 하는 걸 보완한 자료구조이다. 배열은 한 번 지정한 크기를 변경할 수 없지만 ArrayList는크기가 가변적으로 변하는 선형 리스트이다. 내부적으로 데이터를 배열에서 관리하며 데이터의 추가, 삭제를 위해 아래와 같이 임시 배열을 생성해 데이터를 복사 하는 방법을 사용 하고 있다. 대량의 자료를 추가/삭제 하는 경우에는 그만큼 데이터의 복사가 많이 일어나게 되어 성능 저하를 일으킬 수 있다. 반면 각 데이터는 인덱스를 가지고 있기 때문에 한 번에 참조가 가능해 데이터..
2021.11.15 -
[Array] 배열 이란?
Array(배열) : 같은 타입의 변수 여러개로 이루어진 집합 배열의 특징 1. 순차적 Array의 가장 큰 특징인 순차적은 말그대로 순차적으로 데이터가 저장된다는 말이다. 그래서 서로 연결된 데이터들을 저장할 때 Array가 많이 사용된다. 대부분의 데이터가 서로 연결되어 있기 때문에 Array가 가장 많이 사용되는 이유 중 하나이다. 2.삽입 순서대로 저장 Array는 삽입 순서대로 저장된다. 즉 한 방향으로 저장 된다는 뜻이다. 3. 수정가능, 중복 가능 Array는 수정이 가능하다 수정이 불가능한 data 형태로는 Set등이 있다. Array 장점 array에는 순서, 즉 index가 있기 때문에 index순서로 조회가 가능하다. 그러므로 특정인덱스를 조회할 때, 순차적인 데이터를 저장할 때 효과..
2021.11.15 -
교착상태(DeadLock)의 발생 이유와 해결방법
교착상태 : 프로세스가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태 시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생 Ex) 프로세스1과 2가 자원 1,2를 모두 얻어야 한다고 가정 t1 : 프로세스1이 자원 1을 얻음 / 프로세스2가 자원2를 얻음 t2 : 프로세스1은 자원2를 기다림 / 프로세스 2는 자원1을 기다림 교착상태 발생 조건 1. 상호 배제 : 자원은 한번에 한 프로세스만 사용할 수 있음 2. 점유 대기 : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재해야함 3. 비선점 : 다른 프로세스에 할당된 자원은 사용이 끝날 때 까지 강제로 빼앗을 수 없음 4. 순환 대기 : 프로세스의 집합에서 ..
2021.11.15 -
[프로세스와 스레드] 프로세스와 스레드 정리
프로세스 : 프로그램을 메모리 상에서 실행중인 작업 스레드 : 프로세스 안에서 실행되는 여러 흐름 단위 프로세스는 각각 별도의 주소공간 할당 - Code : 코드 자체를 구성하는 메모리 영역 - Data : 전역변수, 정적변수, 배열 등 - 초기화 된 데이터는 data영역에 저장 - 초기화 되지 않은 데이터는 bss 영역에 저장 - Heap : 동적 할당 시 사용 (new(), malloc() 등) - Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역) 멀티 프로세스 | 하나의 컴퓨터에 여러 CPU 장착 -> 하나 이상의 프로세스들을 동시에 처리(병렬) 장점 : 안전성 단점 : 각각 독립된 메모리 영역을 갖고 있어, 작업량이 많을 수록 오버헤드 발생 멀티 스레드 | 하나의 응용 프로그램에서..
2021.11.15 -
[Java 진법 변환]2진수-10진수 8진수-10진수 16진수-10진수
String binary = Integer.toBinaryString(127); // 10진수 127을 2진법String으로 String octal = Integer.toOctalString(127);// 10진수 127을 8진법String으로 String hex = Integer.toHexString(127);// 10진수 127을 16진법String으로 System.out.println(binary); System.out.println(octal); System.out.println(hex); 결과값 : 1111111 177 7f int b = Integer.parseInt(binary, 2); // (10진법으로 바꾸길 원하는 문자열, 원래 몇 진법인지) int c = Integer.parseInt..
2021.11.11 -
[Java String 클래스] String 클래스 완벽 정리 substring,split ..
Java String 클래스에 포함된 메소드를 어떻게 사용하는지 알아보겠습니다. 1. startsWith String str = "apple"; boolean startsWith = str.startsWith("a"); System.out.println("startsWith : " + startsWith); 결과값 : true startsWith("a") 해당 문자열이 a로 시작하는지 확인하고 boolean타입으로 반환하는 메소드 2. endsWith String str1 = "abcdefg"; boolean endWith = str1.endsWith("g"); System.out.println("endsWith : " + endWith); 결과값 : true endsWith("g") 해당 문자열의 끝이..
2021.11.11 -
[JAVA 배열의 정렬] 자바 Array, ArrayList 배열의 오름차순, 내림차순 정렬과 Wrapper와 Primitive는 무슨차이가 있을까?
이번엔 간단한 배열의 선언과 정렬 또 Wrapper클래스와 Primitive 기본 자료타입의 차이가 무엇인지 정리합니다. 1. Wrapper VS Primitve 배열을 만들 때 문득 드는 생각이 있습니다. int arr[] = {1,2,3,4}; arr 배열 선언 Integer arr[] = {1,2,3,4}; arr 배열 선언 엥 도대체 뭐가 다르지? 라는 생각. int는 Primitive 기본 자료타입이고 Integer는 Wrapper 클래스입니다. 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어집니다. 대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class, interfa..
2021.11.09 -
[Java 형변환의 모든 것] Long to Int, String to Int, Int to String 등..
이번에는 Java 형변환의 모든것 !! Kotlin은 그냥 to~로 다해결 되는데 자바는 조금 귀찮다... 그래도 화이팅..!! 공통점을 찾아보자면 String 자료형은 String.valueOf() 메소드로 다 변환 가능하다 ! int, double, long같은경우는 (자료형)으로 표현 되더라 ! 결과 char형은 당연해서 안올리긴 했는데,,, 혹시 필요하신 분이 계실까봐..!!
2021.11.09