[백준] 2696 중앙값 구하기
알고리즘2023. 8. 26. 11:29[백준] 2696 중앙값 구하기

https://www.acmicpc.net/problem/2696 2696번: 중앙값 구하기 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 수열의 크기 M(1 ≤ M ≤ 9999, M은 홀수)이 주어지고, 그 다음 줄부터 이 수열의 원소가 차례대로 주 www.acmicpc.net 이번글은 백준사이트의 중앙값 구하기에 대한 설명입니다. 먼저 평균값과 중앙값은 다릅니다. 1 2 3 4 5가 있을 때 평균은 1+2+3+4+5 / 5 가 평균값이고 중앙값은 말 그대로 1~5사이에 있는 딱 중앙에 있는 값을 의미합니다. 그리고 우선 시간제한이 1초라는점과 입력값의 최대치를 확인해줍니다. TC가 1000이고 하나의 TC에 대한 M의 입력이 9999입니다...

[C++] initializer_list
CPP2023. 8. 23. 15:07[C++] initializer_list

이번 글은 std::intializer_list 생성자에 대한 글입니다! C++11부터 지원된 문법이며 '경량 프록시 오브젝트(lightweight proxy objet)'라고 합니다. '프록시'에 대한 부분은 https://d-yong.tistory.com/49 해당 블로그를 참고해주세요! 간단하게 말하면 뭔가 '대리인 객체'? 대신 생성해주는 느낌으로 이해하시면 될꺼같습니다. 왜냐하면 std::initalizer_list가 실제 리스트 요소를 포함 하지는 않고, 리스트의 요소에 대한 포인터를 포함하고 있기 때문입니다. 문법은 아래처럼 '중괄호'를 통해 빠르고 간편하게 std::vector를 초기화 할 수 있게 되었습니다. std::vector vec = {1, 2, 3}; 주의할 점은 생성자들 중에 ..

[C++] 가변 길이 템플릿과 후행 리턴 타입
CPP2023. 8. 20. 18:38[C++] 가변 길이 템플릿과 후행 리턴 타입

arr = [1, 3.14, 0x16] 위의 파이썬 코드는 아무 문제 없시 사용이 가능합니다 하지만 이를 C++에서 구현을 하려면 어떻게 해야할까요? 이를 C++에서 구현하기 위해서는 '가변 길이 템플릿', '후행 리턴 타입', 'common_type'에 대한 개념이 필요합니다 먼저 가변 길이 템플릿부터 알아보도록 하겠습니다. 가변 길이 템플릿 이란 의 두번째 템플릿 매개변수 typename뒤에오는 '...' 를 의미합니다. 이를 템플릿 파라미터 팩이라고 부릅니다. print(1, 3.14, 0x16) 파이썬에서 print함수는 처럼 막 바로 출력이 가능합니다. 이를 C++로 구현을 하면은 template void Print(T arg) { std::cout

[C++] boost 라이브러리 설치 방법
CPP2023. 8. 17. 16:36[C++] boost 라이브러리 설치 방법

https://www.boost.org/ Boost C++ Libraries Welcome to Boost.org! Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications www.boost.org 위의 링크에 접속하여 Download에 들어가 줍니다. 요기서 자신의 OS에 맞는 파일을 다운로드 해주시면 됩니다. 저는 다운한다음에 D드라이브의 Bo..

[CS] 가상 메모리와 페이징
CS2023. 8. 15. 21:55[CS] 가상 메모리와 페이징

이번글은 페이징에 대한 글입니다. 이전에 https://cjbworld.tistory.com/36 스와핑에 대해서 설명하던 도중 '외부 단편화'를 해결하는 방법으로 잠깐 소개했었는데요, 이번글은 외부 단편화를 해결하기도 하고 메모리 보다 큰 프로세스를 '적재' 할 때에도 사용되는 '가상 메모리'에 대한 정리글입니다! 가상 메모리란? 가상 메모리는 실행하고자 하는 프로세스의 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 도 큰 프로세스를 실행할 수 있게하는 기술 입니다. 이런 가상 메모리를 관리하는 기법 중에는 크게 '페이징'과 '세그멘테이션'이 있지만 페이징에 대해 알아보도록 하겠습니다. 아무튼 가상 메모리를 관리하는 기법인 '페이징'을 사용하는 외부 단편화 문제와 물리 메모리의 크기보다 더 큰 프..

[자료구조] Heap (재구현)
자료구조2023. 8. 15. 19:08[자료구조] Heap (재구현)

이전에 힙을 구현한적이 있는데 다시 정리해서 구현한 글입니다. 힙? 힙이란? '이진트리'이면서 '완전 이진트리'입니다. 힙은 max heap, min heap으로 나뉩니다. 중요한 점은 heap은 '완전 이진트리'라는 점입니다. 이진트리는 자식의 최대 개수가 두개인 트리의 형태를 의미합니다. 완전 이진트리는 마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있는 이진트리입니다. 트리에 대한 개념은 https://code-lab1.tistory.com/8

[C++] 헤더파일의 의미와 Build Process
CPP2023. 8. 10. 19:24[C++] 헤더파일의 의미와 Build Process

이번글은 저희같은? 사용자가 C++코드를 작성할 때 왜 헤더파일과 cpp파일로 나누어서 코드를 작성하는 지에 대한 글입니다. 저또한 그냥 아무런 이해없이 남들이 다 그렇게 쓰니까 아무생각없이 썻었는데 inline이나 템플릿을 공부하면서 부터 꼬이기 시작해서 다시 C++의 Build Process부터 공부한뒤 이해한 내용을 정리하였습니다. Build Process C++의 빌드 프로세스는 크게 아래 세가지 단계로 순자적으로 진행이 됩니다. - PreProcess - Compile - Link 우분투 환경에서 main.cpp, hello.cpp만들고 아래와 같이 코드를 작성해주도록 하겠습니다. 요로코롬 나누어서 컴파일 한뒤 실행하면 당연히 컴파일 자체가 안됩니다. 너무나도 당연하게 main.cpp에서 Hel..

[Algorithm] BFS
알고리즘2023. 8. 8. 21:09[Algorithm] BFS

이번글은 BFS에 대한 글입니다! 그래프와 BFS란? 그래프란 정점과 간선으로 이루어진 자료구조입니다. 실생활에서도 많이 쓰이기 때문에 그래프는 중요한 개념입니다. 종류로는 "무방향 그래프", "완전 그래프", "가중치 그래프" 등등 종류가 많습니다. 그래서 탐색하는 방법이 그래프 구현에 따라 달라집니다. 그럼에도 불구하고 그래프의 모든 정점을 탐색하는 그래프가 대표적으로 아래 두가지가 있습니다. - DFS : Depth First Search - BFS : Breadth First Search 이중에서도 BFS를 구현하는 방법을 알려드리도록 하겠습니다. 일단 그래프를 탐색하려면 그래프가 있어야겠죠? 그래프를 구현하는 대표적인 방법두가지를 알려드리도록 하겠습니다. - 인접 리스트를 통한 그래프 구현 =>..

image