PL 문법 7

[C++] STL priority_queue 사용법

priority queue C++ STL 컨테이너 중 하나로, 내부적으로 힙 자료구조로 구현된 우선순위 큐를 보다 편하게 사용할 수 있게 해준다. 기존의 스택이나 큐 같은 자료구조의 경우, 먼저 들어왔는지 나중에 들어왔는지 같은 인덱스가 삽입된 순서에 의거하여 구성되는 자료구조 형식이라면, 우선순위 큐는 인덱스가 삽입된 순서와는 별개로 특정한 가중치를 가지고 그 가중치에 따라 순서가 결정되는 자료구조 형식이다. 보통 C++ STL에서 사용하는 priority_queue 컨테이너의 경우엔 인덱스의 크기가 가장 큰 순서대로 top에 정렬된다. (기본은 내림차순) 만약 인덱스의 크기가 가장 작은 순서대로 top에 정렬하고 싶다면, priority_queue pq; 와 같이 정렬기준을 명시하거나 그냥 삽입할때에..

PL 문법/C++ 2024.02.14

[C++] STL map / multimap 사용법

map / multimap 이란? map / multimap은 C++ 표준 라이브러리(Standard Template Library)에 있는 컨테이너로, 헤더 안에 포함되어 있다. set과 pair를 합친 느낌이다. iterator 순회 시에도 vector나 set처럼 *iter가 아니라 iter->first / iter->second로 순회한다. 이때, first가 key, second가 value이다. 구조 자체는 set과 유사하다. 값 삽입, 정렬, 탐색시에 굉장히 짧은 시간이 걸린다는 장점이 있고, 여러 STL과 마찬가지로 잘 사용하면 상당히 편리하다. map과 multimap의 차이점은 값의 중복 허용 여부이다. map의 경우 하나의 값만을 저장하는 용도이고, multimap의 경우 중복된 값을..

PL 문법/C++ 2021.08.26

[C++] STL set / multiset 사용법

set / multiset 이란? set은 C++ 표준 라이브러리(Standard Template Library)에 있는 컨테이너로, 헤더 안에 포함되어 있다. set은 쉽게 말해 하나의 집합이다. 값 삽입, 정렬, 탐색시에 굉장히 짧은 시간이 걸린다는 장점이 있고, 여러 STL과 마찬가지로 잘 사용하면 상당히 편리하다. set과 multiset의 차이점은 값의 중복 허용 여부이다. set의 경우 하나의 값만을 저장하는 용도이고, multiset의 경우 중복된 값을 허용하여 저장하게 된다. set은 원소의 값을 기준으로 삽입시 자동 정렬을 지원해준다. set / multiset 기본 함수 생성 set //원하는 자료형 및 클래스 T를 통해 생성 iterator 관련 begin() //맨 처음 iterat..

PL 문법/C++ 2021.08.26

[C++] STL Vector 사용법

Vector 란? Vector는 C++ 표준 라이브러리(Standard Template Library)에 있는 컨테이너로, 사용자가 손쉽게 사용하기 위해 정의된 class이다. Vector는 쉽게 말해 크기가 가변적으로 변하는 배열이라고 할 수 있다. 속도적인 측면에서는 배열에 비해 떨어지지만 메모리를 효율적으로 관리할 수 있다는 장점이 있어 굉장히 많이 사용한다. vector는 배열과 마찬가지로 원소들이 하나의 메모리 블록에 연속하게 저장된다. 그렇기에 원소가 추가되거나 삽입될 때 메모리 재할당이 발생할 수 있고 상당한 부하가 발생하게 된다는 점은 단점으로 꼽히고 있다. Vector의 구조 Vector를 생성하면 메모리 heap에 생성되며 동적할당된다. front() : 첫번째 원소 back() : 마..

PL 문법/C++ 2021.07.13

[C++] C++ 표준 라이브러리

STL : 표준 템플릿 라이브러리 (Standard Template Library) C++를 위한 라이브러리로서 C++ 표준 라이브러리의 많은 부분에 영향을 끼쳤다. C++ 표준 라이브러리 (C++ Standard Library) C++과 C++ ISO 표준 자체로 쓰여진 클래스들과 함수들의 집합이다. C++ 표준 라이브러리는 여러 Generic 컨테이너들, 그리고 이러한 컨테이너들과 함수 객체, Generic 문자열, stream, 몇몇 언어 특징 그리고 power 연산 같은 작업을 위한 함수들을 제공한다. C++ 표준 라이브러리의 특징은 namespace 내에 선언된다는 것이다. (.h 헤더가 아님) C++ 표준 라이브러리와 STL이 많은 특징들을 공유하지만, 둘 중 어느것도 다른 하나의 상위 집합은..

PL 문법/C++ 2021.07.13

[JAVA] Array와 List 차이점 / 컬렉션 프레임워크 ArrayList<E>, LinkedList<E>

배열 (Array) : 여러 데이터를 하나의 이름으로 그룹핑하여 관리하기 위한 자료구조 배열의 장점 배열의 단점 크기가 정해져 있다. (이미 정해진 크기로 인해 작고 가벼우며, 메모리 또한 작음) 크기가 정해져 있다. (미리 크기 지정 필요, 크기보다 큰 인덱스에 접근하면 에러 발생) 기능이 없다. (단순함, 좋은 구성요소가 될 수 있음) 기능이 없다. (불편함, 데이터의 삭제, 추가 등이 불가능) 리스트 (List) : 순서가 있고, 값의 중복을 허용하는 자료구조 추가하는 경우 Array는 지정 인덱스에 추가할 경우, 크기가 제한되어 있어 데이터가 덮어 씌워진다. List는 지정 인덱스에 추가할 경우, 유동적으로 한칸 뒤로 밀고 끼어든다. 삭제하는 경우 Array는 지정 인덱스를 삭제할 경우, 그 인덱..

PL 문법/JAVA 2021.06.28

[JAVA] BufferedReader와 BufferedWriter

JAVA에서 기본적으로 입출력에 사용하는 Scanner는 사용이 편리하고 다양한 타입을 다룰 수 있지만, 속도가 느린 단점이 있다. 따라서, 구현한 프로그램의 시간 복잡도를 줄이기 위해서는 입출력에 Scanner 대신 BufferedReader와 BufferedWriter를 사용하는 것이 좋다. 사용 속도 Scanner - 사용이 편리 - 공백과 개행 문자를 경계로 입력 값을 인식 - 입력받을 수 있는 데이터 타입이 다양 느림 BufferedReader - 사용이 번거로움 - 개행 문자만을 경계로 입력 값을 인식 - 데이터 타입은 String으로 고정 => 필요한 데이터를 처리하기 위해서는 추가적인 가공 필요 - 예외처리 필요 (try&catch 혹은 throw 이용) 빠름 (입력된 데이터가 바로 전달되..

PL 문법/JAVA 2021.06.27
728x90