loading
본문 바로가기

전체 글225

[ Programmers ] _ 같은 숫자는 싫어( java ) [ Programmers ] _ 같은 숫자는 싫어( with java ) https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📚 Table of Contents 문제 문제 설명 제한사항 입출력 예 문제 풀이 문제 접근 ( 알고리즘 ) Integer Stack 생성 입력 배열 크기 만큼 반복, 우선 arr[ 0 ] 값 Stack에 추가 다음 인덱스 부터 Stack peek() 값과 다른 경우만 추가 출력 배열 생성 크기는 Stack의 크기 만큼 St.. 2023. 12. 12.
[ Java ] 버퍼 ( Buffer ) [ Java ] 버퍼 ( Buffer ) 📚 Table of Contents 버퍼 ( Buffer ) 란? 스트림은 내부에 버퍼( buffer ) 라는 임시 메모리 공간을 가지고 있다. 위키백과 : 버퍼( buffer )는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역이다. 버퍼는 컴퓨터 안의 프로세스 사이에서 데이터를 이동시킬 때 사용된다. 보통 데이터는 키보드와 같은 입력 장치로부터 받거나 프린터와 같은 출력 장치로 내보낼 때 버퍼 안에 저장된다. 버퍼는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역으로 입출력 시에 많이 사용된다. 예를 들어 입력 버퍼 사용 시 입력한 데이터가 프로그램으로 바로 전달되는.. 2023. 12. 6.
[ Linear Data Structure ] 해시 테이블 ( Hash Table ) [ Linear Data Structure ] 해시 테이블 ( Hash Table ) 📚 Table of Contents 해시 테이블 ( Hash Table ) 이란? 해시 테이블이란 해시함수를 사용하여 변환한 값을 index로 삼아 (key, value)로 저장하는 자료구조이다. 키를 통해 해당 데이터에 빠르게 접근할 수 있다. 해싱( Hashing ) 해싱이란 key를 특정 계산식인 해시함수( Hash Function )에 넣어 나온 결과를 사용하여 고정된 크기의 값으로 변환하는 작업을 말한다. 해시 테이블 특징 key : 해시 테이블 접근을 위한 입력 값 hash function : 키를 해시 값으로 매핑하는 연산 hash value : 해시 테이블이 인덱스 hash table : key - val.. 2023. 12. 5.
[ Linear Data Structure ] 데크 ( Deque ) [ Linear Data Structure ] 데크 ( Deque ) 📚 Table of Contents 데크 ( Deque ) 이란? 데크(Deque)는 Double-Ended Queue의 줄임말로, 양쪽 끝에서 데이터를 추가/반환/삭제할 수 있는 형태의 자료구조이다. 스택(Stack)과 큐(Queue)의 특징을 모두 갖고 있다. 배열(Array)로도 구현 가능하지만 이중 연결 리스트(Double Linked List)로 구현하는 것이 효율이 좋다. 데크 특징 자료의 추가, 삭제가 양쪽 끝에서 모두 가능 큐, 스택의 특징을 모두 갖는다. 큐 : 자료 삭제는 front / 추가는 rear 에서 만 가능 스택 : 자료 삭제 / 추가 모두 top 에서 만 가능 양쪽 2개의 포인트를 가진다. 이중 연결 리스트.. 2023. 12. 4.
[ Linear Data Structure ] 큐 ( Queue ) [ Linear Data Structure ] 큐 ( Queue ) 📚 Table of Contents 큐 ( Queue ) 이란? 큐는 한쪽 끝에서 삽입되고, 다른 한쪽 끝에서 삭제되는 리스트 구조이다. 큐는 먼저 집어 넣은 데이터가 먼저 나오는 특징이 있다. ( 후입선출 ) 이러한 자료구조를 FIFO ( First In FIrts Out ) 라고 한다. 큐 특징 데이터의 입력, 출력이 정해진 위치에서만 가능하다. 자료 추가( 삽입, 입력 )는 끝( rear )에서 만 가능하다. 자료 반환( 삭제, 출력 )은 처음( front )에서 만 가능하다. 전후 / 선후 관계가 1 : 1 이다. 선형자료구조 이다. 입출력 순서 / 처리 방법에 따라 큐를 구분할 수 있다. 일반적인 큐 ( Genaral Queue.. 2023. 12. 3.
[ Linear Data Structure ] 스택 ( Stack ) [ Linear Data Structure ] 스택 ( Stack ) 📚 Table of Contents 스택 ( Stack ) 이란? 일반적으로, 차곡차곡 쌓아둔 모양 / 형태의 자료구조를 의미한다. 스택은 마지막에 저장한 데이터를 가장 먼저 꺼내는 특징이 있다. ( 후입선출 ) 이러한 자료구조를 LIFO( Last In FIrts Out ) 라고 한다. 스택 특징 후입선출 ( LIFO ) 구조 : 마지막에 들어온 데이터가 가장 먼저 나가는 구조 단방향 입출력 구조 : 데이터의 들어오는 방향과 나가는 방향이 같다. 리스트의 top에서 데이터가 들어오고 나간다. 데이터를 하나씩만 넣고 뺄 수 있다. 추가 ( push ) 삭제 ( pop ) 스택의 TOP, BOTTOM TOP, BOTTOM은 스택의 특정위.. 2023. 12. 2.
[ Linear Data Structure ] 연결리스트 ( Linked List ) [ Linear Data Structure ] 연결리스트 ( Linked List ) 📚 Table of Contents 연결 리스트 ( Linked List ) 선형 리스트의 단점 ( 고정 크기의 순서 배열 )을 보완한 자료구조 이다. 동적으로 크기를 바꿀 수 있다. 삭제, 삽입 등에 데이터 이동이 필요 없다. 데이터 및 링크( 포인터 )에 의해 비 연속적( 비 순차적 )으로 연결된 선형 자료구조이다. 연결 리스트 특징 포인터로 연결되어 있다. 원소들이 메모리 내 어느 위치에도 가능하다. 동적으로 노드의 삽입과 삭제가 용이하다 항목의 삭제, 삽입 시에 데이터 이동이 필요 없다. 원 소 끝 포인터는 null을 가르킨다. 크기가 가변적이다. 메모리가 허용하는 만큼 커질 수 있다. 메모리 공간 사용이 효율적.. 2023. 12. 1.
[ Linear Data Structure ] 배열 ( Array ) [ Linear Data Structure ] 배열 ( Array ) 📚 Table of Contents 배열 ( Array ) 배열 ( Array )는 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 방법이다. 예를 들어 배열이 int 타입인 경우 정수 요소만 저장할 수 있고 그 외 타른 타입의 요소는 저장할 수 없다. 배열을 구성하는 각각의 값을 요소 ( element )라고 하며, 배열의 위치를 가르키는 숫자는 인덱스 ( index )라고 한다. 배열 예시 // 배열 선언 // type[] name = new type[size] int[] arr = new int[5]; // 선언 + 초기화 int[] arr1 = {1, 2, 3, 4, 5}; //elements : 1, 2, 3 ,4.. 2023. 12. 1.
[ DATA STRUCTURE ] 자료구조 [ DATA STRUCTURE ] 자료구조 📚 Table of Contents 자료 구조 ( data structure )란 무엇인가? 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다. 즉, 문제 해결이 쉽도록, 데이터에 손쉬운 접근, 변경, 처리가 가능하게 데이터를 저장, 표현하는 방법을 의미한다. - 구조화된 데이터에 특정한 연산들을 용이하게 할 수 있는 구조 알고리즘 적용 시, 효과적으로 처리 가능하도록 만들어진, 특화된 데이터 체제 / 형태 의미한다. - 배열, 연결 리스트, 스택, 큐, 트리, 그래프 등 자료 및 그 처리를 함께 고려하는 데이터 형식이다. - 즉, 자료와 그 작동을 함께 고려한다. - 컴퓨터에 효과적을 표현, 저장, 처리하는 기술 - 자.. 2023. 11. 29.
[ ALGORITHM ] 알고리즘 복잡도 ( Complexity ) [ ALGORITHM ] 알고리즘 복잡도 ( Complexity ) 📚 Table of Contents 알고리즘의 효율성 / 성능 알고리즘 효율성은, 계산에 필요한 자원 소요량이 적을수록 좋다. - 시간과 공간 측면에서 적게 소요되는 것이 효율적이고 좋은 알고리즘 이다. 복잡도 ( Complexity ) 알고리즘 성능을 나타내는 척도이다. 시간 복잡도 ( Time Complexity ) 주로, 수행 시간 관점에서, 알고리즘이 사용 한 기본 연산의 수를 의미한다. 상수 시간 알고리즘 ( constant time algorithm ) O(c) 또는 O(1) 입력 크기(개수)에 관계없이, 항상 일정한 수행 속도를 갖는다. 가장 효율 적이다. 📒예시 배열에 있는 항목을 인덱스를 사용하여 접근할 때 집합 내 요소.. 2023. 11. 29.