• [자료구조] 추상 자료형(Abstract  Data Type, ADT)이란? (feat. 스택 & 큐)

    [자료구조] 추상 자료형(Abstract Data Type, ADT)이란? (feat. 스택 & 큐)

    추상 자료형(Abstract Data Type, ADT)이란? 구현하고자 하는 구조에 대해 구현 방법은 명시하지 않고 자료구조의 특성들과 어떤 Operations들이 있는지를 설명하는 자료구조의 한가지 형태. 즉, 일종의 '규칙'들의 나열이라고 쉽게 이해할 수 있다. ADT의 가장 대표적 예로는 스택(Stack)과 큐(Queue)가 있다. 스택(Stack) 이란? 영어 단어 Stack이란 쌓아 올린다는 것을 의미한다. 영어 뜻과 마찬가지로 스택(Stack)자료 구조는 밑바닥부터 탑을 쌓듯이 차곡차곡 데이터를 쌓아올린 자료 구조를 뜻한다. ▼ 스택(Stack) 의 특징 스택은 탑을 쌓을 때 위로 쌓는 것만 가능하듯이 한 방향으로만 입력할 수 있으며 구조 중간에 값을 끼어 넣어 저장할 수 없다. 즉, 같은 ..

  • [Java] 빠른 입출력 : BufferedReader & BufferedWriter

    [Java] 빠른 입출력 : BufferedReader & BufferedWriter

    1. BufferedReader & BufferedWriter란? 간단히 말해서 BufferedReader와 BufferedWriter란 버퍼를 이용하여 데이터의 입출력을 다루는 함수입니다. 그렇다면 우선 버퍼란 무엇일까요? 전에 버퍼에 대해 정리해둔 글입니다. 필요하시다면 참고해보세요. [개념] 버퍼(Buffer) 앞서 정리했던 스트림과 늘 붙어다니는 개념이 바로 버퍼(Buffer)다. 버퍼도 스트림과 같이 일상에서 자주 쓰이는 용어다. 누구나 한번쯤 영상을 보다가 멈추면 "버퍼링에 걸렸다"라고 말해본 경 ontheway.tistory.com 윗 글에서 마지막에 버퍼는 데이터를 옮기는 바구니에 비유했듯이, 입/출력에서의 버퍼란 입/출력이 발생할때마다 데이터를 하나하나 전송하지 않고 차례대로 모아두었다가..

  • 버퍼(Buffer)란?

    버퍼(Buffer)란?

    앞서 정리했던 스트림과 늘 붙어다니는 개념이 바로 버퍼(Buffer)다. 버퍼도 스트림과 같이 일상에서 자주 쓰이는 용어다. 누구나 한번쯤 영상을 보다가 멈추면 "버퍼링에 걸렸다"라고 말해본 경험이 있다. 여기서 말하는 버퍼링이 버퍼의 동작을 일컫는 말이다. 스트림과 마찬가지로 버퍼라는 용어는 여러 영역에서 다양하게 적용되어 사용된다. 하지만 큰 맥락은 비슷하기 때문에 스트림을 정리하는 참에 버퍼까지 정리해두면 이후에 공부를 할때 도움이 될 것 같아 정리해두기로 했다. 1. 버퍼(Buffer)란? 우선 영단어 Buffer의 뜻을 알아보면, Buffer 명사 1. 완충제 2. 완충 장치 동사 1. 완화하다 2. ~를 보호하다 완충 장치라는 말만 보고선 쉽게 버퍼의 뜻을 이해하기는 어렵다. 하지만 버퍼의 사..

  • [알고리즘] 시간 복잡도(Time Complexity)란? (Big-O 표기법)

    [알고리즘] 시간 복잡도(Time Complexity)란? (Big-O 표기법)

    1. 시간복잡도란? 시간 복잡도(Time Complexity)란 입력을 나타내는 문자열 길이의 함수로서 작동하는 알고리즘을 취해 시간을 정량화하는 것| 시간 복잡도란 크기 n의 모든 입력에 대해 걸리는 최대의 시간(최악의 경우) 명칭이 시간 복잡도라 헷갈릴 수 있지만 시간 복잡도는 시간 개념이 아니라 알고리즘이 실행될 때 동작하는 모든 연산의 횟수가 몇번인지 세는 것 알고리즘의 성능 평가 유형엔 최선, 평균, 최악이 있는데, 이 중 최악의 경우로 알고리즘의 성능을 평가한다. 그 이유는 알고리즘이 복잡해질 수록 평균 성능을 구하기 어렵기도 하며, 나머지 경우 모두 최악의 경우보다는 빠르므로 최악의 경우가 앞선 두 경우를 모두 포함할 수 있기 때문이다. 2. Big-O Notation(Big-O 표기법) B..

  • [Java] 변수의 원시 타입과 래퍼 클래스(Primitive Type & Wrapper Class)

    [Java] 변수의 원시 타입과 래퍼 클래스(Primitive Type & Wrapper Class)

    자바 코드를 보면 종종 변수가 같은 정수형인데도 어느 곳에서는 int를 사용하고 다른 곳에선 Integer를 사용하는 것을 볼 수 있습니다. 왜 같은 형인데도 표기 방법이 다를까요? 이것은 변수의 원시 타입(Primitive Type)과 래퍼 클래스(Wrapper Class)의 관계로 알 수 있습니다. # 원시 타입 (Primitive Type) • 기본형이라고도 부르며, 실제 연산에 사용되는 변수로 모두 8 종류가 있습니다. (byte, short, int...) • 기본형은 반드시 사용하기 전에 선언되어야 합니다. • OS에 따라 자료형의 길이가 변하지 않습니다. • 비객체 타입으로, null 값을 가질 수 없습니다. 여기서 중요한 것은 Primitive Type은 비객체 타입이라는 건데요. 프로그램..