본문 바로가기

Language

(9)
[Java][Collections Framework 완전 정복] Stack 클래스를 사용하지 않는 이유 및 대안 개요프로그래머스에서 스택 관련 문제를 풀다가 익명의 분께서 Java의 Stack 클래스는 사용을 지양하는 게 좋다는 글을 읽었다.Stack 자료구조는 매우 유명한 자료구조이고, 그걸 구현한 Stack 클래스를 사용하지 말라니? 의문점이 들어 Stack 클래스에 대해 자세히 조사하게 되었다.   Stack 자료구조에 대해서 스택(Stack) 자료구조는 LIFO(Last In First Out)의 자료구조이다.이 말의 의미는 가장 나중에 삽입(push)된 데이터가 가장 먼저 삭제(pop)된다는 뜻이다. 또한 Stack 자료구조는 정해진 방향으로만 데이터를 쌓을 수 있으며,맨 위의 데이터(top)에 대해서만 접근이 가능해야 한다.   Java의 Stack 클래스의 문제점Java의 Stack 클래스는 Vecto..
[Java][Collections Framework 완전 정복] Map 인터페이스, Map.Entry 인터페이스 목차개념 및 특징구현체메소드중첩 클래스(Nested Class) - Map.Entry  1. 개념 및 특징- 개념중복을 허용하지 않는 Key와 중복을 허용하지 않는 Value가 각각 쌍을 이루어 저장되는 자료구조  - 특징중복 X삽입 순서 보장 X정렬 불가능동기화 (Thread-safe) 지원 X  2. 구현체HashMap해시함수를 이용한 Map삽입 / 삭제 / 조회 연산의 O(1)을 보장하는 아주 빠른 자료구조삽입 순서 보장 X정렬 불가능동기화 지원 X LinkedHashMap삽입 / 삭제가 HashMap에 비해 느림삽입 순서를 보장정렬 불가능동기화 지원 X TreeMap삽입 / 삭제가 굉장히 느림삽입 순서를 보장Map이지만 정렬이 가능동기화 지원 X HashTable(과거에 사용, 현재는 사용을 지양..
[Java][Collections Framework 완전 정복] Set 인터페이스(HashSet) 목차Set 인터페이스HashSet이란?사용법(생성자, 데이터의 개수, 비어있는 지 확인, 데이터 확인, 추가, 제거, 전체 데이터 조회)  Set 인터페이스먼저 HashSet을 알기 전에 Set부터 알아야한다.  Set의 특징1. 객체를 중복해서 저장할 수 없다.만약 중복한 값이 들어오면 자동으로 제거한다. 2. key, value형태를 지원하지 않는다.이건 Map을 사용해야 한다. 3. 오직 하나의 null값만 저장할 수 있다. Set의 메서드Set은 Collections를 구현하는 만큼 그 메서드를 모두 사용가능하다.  그렇다면 HashSet이란?Set을 구현한 클래스로 HashMap을 활용한 hash table로 구현된 객체이다.Set 인터페이스의 구현체이니만큼 Set의 특성을 모두 가지고 있다. ..
[Java][캐스팅] int[] <-> ArrayList 개요프로그래머스에서 자바로 코딩 테스트를 시작했다.  그런데 백준과 다르게 프로그래머스는 입출력을 직접 하는 대신에매개변수로 입력을 받고, 반환값으로 출력을 대신했다. 여기서 큰 충격을 받았지만,더 큰 문제는 그게 자바에서는 고정된 크기의 자료형인 int[] 배열이나 String이라는 점이다....  그래서 크기를 마음대로 변경할 수 있는 ArrayList라는 대안이 필요했다.ArrayList는 값을 추가하고 빼는 게 매우 편리하기에 변환하는 방법을 익힐 필요가 있었다!  int[] ArrayList1. for Loopimport java.util.*;class Solution { public static int[] solution(int[] arr) { //1. int[] to A..
[C++] 우선순위 큐(PRIORITY_QUEUE) & 페어(PAIR) 사용법 개요우선순위 큐는 컨테이너 안의 자료들을 내림차순 혹은 오름차순으로 정렬해주는 자료형이다. 그런데 pair와 같이 자료가 두 개 이상이 되면 어떻게 될까??  간략하게 알아보도록 하자.  1. 기본 사용법(내림차순)첫 번째 인자를 기준으로 내림차순으로 정렬된다.첫 번째 인자가 같다면 두 번째 인자를 기준으로 내림차순 정렬된다.#include #include #include using namespace std;int main(void) { ios_base::sync_with_stdio(false); cin.tie(nullptr); priority_queue> pq; pq.push({1, 1}); pq.push({1, 2}); pq.push({2, 3}); pq.push..
[C++] memset 함수(메모리 초기화) 함수 이해C언어와 C++에서 쓰이는 memset 함수는 메모리의 내용(값)을 원하는 크기만큼 특정 값으로 세팅할 수 있는 함수 입니다. 주로 0으로 배열의 값들을 초기화할 때 자주 사용하는 함수입니다.   함수 원형void* memset(void* ptr, int value, size_t num);  1. 반환값: 정상적인 값이 들어온다면 첫 번째 인자로 들어온 ptr 포인터를 반환하지만,실패한다면 NULL을 반환합니다.  2. 첫 번째 인자(void* ptr): 바꾸고자 하는 메모리의 시작 주소가 들어가는 자리입니다.즉, 그 주소를 가리키고 있는 포인터가 위치하는 자리입니다. 흔히 사용하는 방법으로 배열을 초기화한다면 배열의 이름(배열의 시작 주소)이 들어갑니다.Ex)int Rank[500];memse..
[C++] int를 string으로 변환하는 방법 std::to_string()으로 int를 string으로 변환 std::to_string()은 C++ 11에서 추가된 함수입니다. 인자로 전달된 int형 변수를 string 변수로 변환시켜줍니다. #include #include using namespace std; int main(){ int num = 12345; string s = to_string(num); cout
[C++] 수학 함수 제곱(pow) 함수 원형 double pow(double base, double n) // base가 되는 숫자의 n 제곱 새로운 수학 함수를 사용할 때마다 차근차근 정리할 예정입니다.