본문 바로가기

전체 글49

[C++] - sort()함수 사용법 정리(STL) 이전에 STL에 대해 설명했던 포스팅에서 알고리즘(algorithm)에 대하여 간단히 알아보았다. 오늘은 알고리즘의 템플릿 함수들 중, 정렬 시 유용하게 사용할 수 있는 sort() 함수에 대하여 알아보자. 자료구조와 알고리즘을 배우기 시작하면 선택 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬, 버블 정렬, 힙 정렬 등등 다양한 정렬 방법에 대하여 공부하게 된다. 하지만 C++의 STL에는 이미 간단한 코드 몇줄로 정렬을 수행할 수 있는 라이브러리가 구현되어 있다. 따라서 복잡하게 정렬 알고리즘을 구현할 필요가 없다. (참고로 sort()의 시간 복잡도는 nlogn 이다.) sort() 사용법 sort함수는 배열의 원소들을 정렬할 때 사용하며, 기본적으로 오름차순으로 정렬한다. sort()함수를 사용하기 위.. 2024. 1. 2.
[C++] - map 사용법 정리 (STL) map이란? map은 많이 쓰이는 STL 자료구조 중 하나로, (key, value) 쌍을 저장할 수 있는 클래스이다. key는 중복된 값을 가질 수 없다는 특징이 있으며, 원소가 삽입될때 자동으로 오름차순 정렬되어 검색, 삽입, 삭제에 유리하다. (O(logn)을 보장한다.) 1. 헤더파일 C++에서 map을 사용하기 위해서는 헤더파일을 include해줘야한다. 코드 상단에 아래와 같이 한 줄만 적어주면 된다. #include 2. map 선언하기 fruit 이라는 이름을 가지고 있고, key값은 string 자료형, value 값은 int 자료형을 가진 map을 선언하는 코드이다. map fruit; 3. 원소 삽입 원소를 삽입할 때에는 insert() 함수를 이용한다. fruit.insert({ ".. 2023. 12. 30.
[C++] - STL(표준 템플릿 라이브러리)에 대하여 STL이란? STL이란, C++에서 제공하는 표준 템플릿 라이브러리 (Standard Template Library)이다. 간단히 말해, 다양한 자료구조와 알고리즘들을 템플릿으로 제공하는 라이브러리이다. STL에 포함되는 클래스와 함수들은 크게 3가지로 분류할 수 있는데, 컨테이너(container), 반복자(iterator), 알고리즘(algorithm)이다. 컨테이너 (container) 자료구조를 구현해 놓은 클래스이다. 일반적으로 많이 알려진 리스트, 큐, 스택을 포함하여 다양한 자료구조들이 구현되어 있다. 컨테이너는 크게 3가지로 분류할 수 있다. 순차 컨테이너 (Sequence Container) 연속적인 메모리 공간에 순서대로 값을 저장한다. vector, deque, list 등이 있다. .. 2023. 12. 28.
[C/C++] - 입력 개수를 모를때 (EOF까지 입력받기) 1. EOF란? EOF란 End - Of -File을 뜻하는 말로, 파일의 끝에 도달했음을 의미한다. 파일의 끝인 경우에는 TRUE, 파일의 끝이 아닌 경우에는 FALSE를 반환한다. 주의! 마지막 입력에서 판단하는 것이 아니다. 마지막 입력 다음, 더 이상 읽을 데이터가 없을 경우에 EOF가 TRUE를 반환한다. 2. EOF인지 판단하는 방법 ① scanf 가 입력받은 인자의 갯수를 이용하기 scanf는 입력받은 인자의 개수를 반환하는 특성이 있다. 예를 들어, scanf(%d, %d, &a, &b); 를 통해 2개의 정수 a와 b를 정상적으로 입력받았다면, scanf의 값은 2가 된다. int a, b; //scanf를 통하여 2개의 인자 a와 b가 정상적으로 입력되었다면 while(scanf("%d.. 2023. 12. 13.
[C++] - namespace와 using 사용법 (std:: 생략하기) 1. namespace란? namespace란, 클래스, 상수, 변수, 함수, 구조체 등의 이름이 중복되어 컴파일 시 오류가 생기는 것을 방지하기 위해 도입된 개념이다. (예를 들어 하나의 프로그램을 여러 개발자가 개발하는 경우, A 개발자가 덧셈 기능을 수행하는 number()라는 이름의 함수를 구현했다고 하자. 그리고 B 개발자는 같은 이름의 number() 함수이지만, 뺄셈 기능을 수행하도록 작성하였다고 하자. A 개발자와 B 개발자가 작성한 소스를 합쳐서 컴파일하거나 두 개발자의 소스를 링크시킬 경우 number 함수가 어떤 기능을 수행하는지 알 수 없어 오류가 발생하게 된다. ) namespace abc{//abc라는 이름공간 생성 ... } namespace를 생성하는 방법은 위와 같다. 생성.. 2023. 12. 12.
[자료구조] - 원형큐의 구조와 구현 1. 선형큐의 문제점 앞서 포스팅한 큐 설명 글에서 선형큐에 대한 문제점을 잠깐 언급하였다. 선형큐를 1차원 배열을 이용하여 구현할 경우, front와 rear의 값이 계속 증가만 하므로 언젠가는 배열의 끝에 도달하게 되어 비효율적이다. 이러한 문제는 큐를 구현하는 배열을 선형 말고 원형으로 두면 쉽게 해결할 수 있다. 원형큐의 구조와 구현 방법을 지금부터 알아보자. 2. 원형큐의 구조 원형큐도 선형큐와 마찬가지로 1차원 배열로 구현하는데, front와 rear가 증가만 하는 선형큐와 달리, 원형큐는 front와 rear의 값이 배열의 끝 값인 MAX-1 에 도달하면 그 다음값은 다시 0이 된다. 원형큐에서 front와 rear의 초기값은 둘 다 0이다. front가 큐의 첫번째 요소의 하나 앞을, re.. 2023. 12. 10.