본문 바로가기

map6

[Java] 올바른 Collection 선택하기 🙋 들어가며 물건을 담을 수 있는 그릇의 종류는 다양합니다. 데이터 세계에서 그릇을 자료 구조(Data Structure)라고 표현합니다. 자바에서도 다양한 자료 구조를 제공합니다. 이번 글을 통해서 상황에 맞게 사용하는 방법을 알아보겠습니다. 🗂️ Java Collection Framework 자바에서 제공하는 다양한 자료 구조들의 모음을 Collection이라고 부릅니다. 다양한 인터페이스와 클래스들의 집합이며, 자바에서는 Collection 외에도 배열이라는 구조도 제공합니다. Collection 인터페이스를 상속받는 주요 인터페이스는 다음과 같습니다. List 인터페이스 Set 인터페이스 Queue 인터페이스 Map 인터페이스는 구조상의 차이로 별도로 정의되지만 동일하게 Java Collectio.. 2023. 8. 9.
[Java] 백준 19637번 : IF문 좀 대신 써줘 https://www.acmicpc.net/problem/19637 19637번: IF문 좀 대신 써줘 첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭 www.acmicpc.net 💡 문제 풀이 기본적인 이분탐색 문제이다. 칭호와 값의 매핑을 위해서 Map을 사용했고, 그중 비교가 빠른 HashMap을 사용했다. 중복을 제외해서 Map에 넣고 이분탐색을 위해 필요한 배열을 스트림으로 정렬해서 넣었다. 이후는 이분탐색으로 찾으면 된다! 시간복잡도는 아무리 커야 O(nlogn)이다. ✔️ 느낀 점 자바로 알고리즘을 푸는 건 너무 어렵다.. 2023. 4. 26.
[C++] 백준 4358번 : 생태학 https://www.acmicpc.net/problem/4358 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 문제 풀이 간단하게 맵에 대해서 이해를 묻는 문제였다. 느낀 점 문제 자체는 어렵지 않으나, 이번에는 2가지를 배울 수 있었다. 1. 백준 채점은 파일 형식으로 처리된다. 따라서 EOF를 받으면 입력을 종료하면 된다. 2. cout 2022. 1. 20.
[C++] 백준 10816번 : 숫자 카드 2 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 풀이 숫자 카드의 개수를 구하는 문제이다. map을 구현하면 아주 쉽게 풀 수 있다. 느낀 점 다른 분들은 lower bound와 upper bound로 풀었다. C++ STL에서 지원하기 때문에 아주 쉽게 풀 수도 있다. 나는 보자마자 생각난 게 map이어서 그냥 map으로 풀었다! 코드 #include #include using namespace std;.. 2021. 8. 5.
[C++] 표준 템플릿 라이브러리 (STL) : 컨테이너 (vector, map) 표준 템플릿 라이브러리(STL)란? 템플릿으로 작성된 많은 제네릭 클래스와 함수 라이브러리! STL에 포함된 제네릭 클래스와 함수들은 "컨테이너", "iterator", "알고리즘" 3가지로 분류된다. 컨테이너는 자료 구조를 구현한 클래스로 맵(map), 셋(set), 벡터(vector), 리스트(list) 등이 있다. 이번 글은 벡터와 맵에 대해서 정리한다! 속도적인 측면에선 배열보다 떨어지지만 메모리 관리에 있어서는 아주 효율적이다! 벡터는 size와 capacity가 따로 존재한다! 이유는 새로운 원소가 들어올 때마다 새로운 공간을 할당하면 비효율적이기 때문이다. 그렇기에 벡터는 새로운 원소가 들어오면 추가적인 메모리 공간을 할당한다. (이전 공.. 2021. 7. 1.
[C++] 프로그래머스 : 완주하지 못한 선수 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 문제 풀이 map을 선언하고 완주자에 대해서 value 값을 +1 해준다. 참가자에 대해서 value 값을 -1 해준다. map의 값이 음수면 완주하지 못한 대상이므로 리턴해준다. 느낀 점 이번 기회로 STL 제네릭 컨테이너인 map에 대해서 공부하게 되었다. map을 이해하면 쉬운 문제이다. 코드 #include #include #inclu.. 2021. 7. 1.