[백준/C++] 7662번: 이중 우선순위 큐
2022. 11. 16. 15:59
문제 풀이/백준
문제 이중 우선순위 큐(dual priority queue)는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭제할 때 연산(operation) 명령에 따라 우선순위가 가장 높은 데이터 또는 가장 낮은 데이터 중 하나를 삭제하는 점이다. 이중 우선순위 큐를 위해선 두 가지 연산이 사용되는데, 하나는 데이터를 삽입하는 연산이고 다른 하나는 데이터를 삭제하는 연산이다. 데이터를 삭제하는 연산은 또 두 가지로 구분되는데 하나는 우선순위가 가장 높은 것을 삭제하기 위한 것이고 다른 하나는 우선순위가 가장 낮은 것을 삭제하기 위한 것이다. 정수만 저장하는 이중 우선순위 큐 Q가 있다고 가정하자. Q에 저장된 각 정수의 값 자체를 우선순위라고 간주하자. ..
[백준/C++] 1436번: 영화감독 숌
2022. 2. 28. 10:56
문제 풀이/백준
문제 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다. 종말의 숫자란 어떤 수에 6이 적어도 3개이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 숫자는 666이고, 그 다음으로 큰 수는 1666, 2..
[vscode] Visual Studio Code에서 C++17 사용하기 (Code Runner)
2021. 7. 8. 00:26
기타 프로그래밍
삽질 vscode가 쓰다 보니까 가벼워서 좋은데, 이것저것 커스텀 할 수가 있어서 좋으면서도 어렵다. 사실 컴파일러 차이도 잘 모르겠고, 빌드하는 것도 잘 몰라서... 그냥 확장 기능 이용해서 우클릭 빌드 중이었다. 근데 때마침 C++ 버전 충돌이 나서 멘붕이 왔다. 구글링을 했을 때 나와 비슷한 경우가 있긴 했으나, 따라 해 봐도 제대로 해결되지 않았다... 나 같은 경우에는 심즈였나...? 어떤 게임 관련 툴 때문에 mingw-x86 구 버전이 깔려 있는 상황이었다. 요즘 모던 C++ 공부에 관심이 많은데, gcc가 너무 예전 버전이라 그런가 자꾸만 #include에서 오류가 발생했다. 😣 그래서 우선 구 버전을 유지하고, 새 버전을 추가로 설치해 봤더니 역시나 되지 않는다. cmd에서 버전 체크할 ..
[C++] 예제로 알아보는 std::pair, std::tuple
2021. 6. 20. 20:09
C++/공부
std::pair https://en.cppreference.com/w/cpp/utility/pair std::pair - cppreference.com template struct pair; std::pair is a class template that provides a way to store two heterogeneous objects as a single unit. A pair is a specific case of a std::tuple with two elements. If neither T1 nor T2 is a possibly c en.cppreference.com #include #include #include std::pair Login(int ..
[YAML] yaml & yaml-cpp
2021. 6. 12. 19:33
기타 프로그래밍
YAML 기본 문법 YAML? YAML(Yet Another Markup Language) .yml, .yaml 들여쓰기 (indent) 2칸(권장) 또는 4칸 person: name: Nabin Kim job: developer skills: - docker - kubernetes 데이터 정의 (map) key: value apiVersion: v1 kind: Pod metadata: name: echo labels: type: app 배열 정의 (array) - 로 표시 person: name: Nabin Kim job: Developer skills: - docker - kubernetes 주석 (comment) # 로 표시 # comment name: Nabin Kim # comment 참/거짓 ..
[C++] 모던 C++로 배우는 함수형 프로그래밍 - (1-3) 람다 표현식
2021. 4. 1. 22:30
C++/모던 C++로 배우는 함수형 프로그래밍
간단한 함수를 람다로 표현하기 람다 표현식: 함수의 익명 표기법. 함수형 프로그래밍에서 일급 함수(first class function)와 순수 함수(pure function)를 만들 때 유용하다. [...] (...) {...} [] - 캡처 목록(capturing list) 람다 표현식 바깥의 변수를 람다 본문에서 어떻게 접근하는지를 나타낸다. 람다 표현식의 시작을 나타낸다. 캡처 목록에 &를 사용하면 바깥 범위에 있는 변수를 참조로 캡처하고, =를 쓰면 값으로 캡처한다. () - 매개변수 목록(parameter list) {} - 본문 for_each( begin(vehicles), end(vehicles), [](const Vehicle &vehicle) { cout
[C++] 모던 C++로 배우는 함수형 프로그래밍 - (1-2) C++ 표준 라이브러리 구현 살펴보기
2021. 3. 31. 22:48
C++/모던 C++로 배우는 함수형 프로그래밍
컨테이너 안에 객체 배치하기 컨테이너: 다른 객체를 저장하고, 이 객체가 사용하는 메모리를 관리한다. std::array - 동일한 데이터 타입의 객체를 저장하고 선형으로 배치하는 순차 컨테이너 // 10개의 정수로 array를 초기화한다. std::array arr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // array의 각 요소를 출력한다. for (auto a : arr) std::cout
[C++] 모던 C++로 배우는 함수형 프로그래밍 - (1-1) 모던 C++의 새로운 기능 익히기
2021. 3. 30. 23:48
C++/모던 C++로 배우는 함수형 프로그래밍
Auto 키워드로 데이터 타입을 자동으로 정의하기 자동 지속 기간(Automatic Storage Duration): 변수가 해당 변수를 정의한 시점에서 생성되고, 코드 블록을 빠져나가면 파괴되는 것 C++11부터는 auto 키워드가 초기화에 선언된 변수의 실제 타입을 추론하기 위해 사용된다. C++14부터는 auto 키워드를 함수에 적용해 후행 반환 타입(Trailing Return Type)을 사용할 수 있다. auto a = 1; auto b = 1.0; auto c = a + b; auto d = { b, c }; std::cout
[TIL] 2020-12-22
2020. 12. 22. 23:47
TIL(Today I Learned)
Unreal Community 언리얼 엔진 포럼 forums.unrealengine.com/ Forum - Unreal Engine Forums Forum Description forums.unrealengine.com 언리얼 프로젝트 템플릿 일부 코드와 애셋이 포함되어 있으며, 이미 결합된 작은 프로젝트. 이를 통해서 어떤 식으로 프로그래밍했는지 그 방식을 살펴볼 수 있다. 프로젝트 세팅 블루프린트로 설정해도 C++ 클래스를 추가하고, C++로 변환할 수 있음. 뷰포트 이동 화살표를 잡은 상태에서 ESC 키를 누르면 바닥으로 내릴 수 있음! 이동(W), 회전(E), 스케일(R) 이동 스냅(격자 모양), 회전 스냅(각도 모양), 스케일 스냅(화살표)
[TIL] 2020-12-08
2020. 12. 8. 23:36
TIL(Today I Learned)
boost::filesystem::remove_all 오늘은 열심히 디버깅해서 오류 조건을 찾아냈다. 처음에는 파일이 너무 커서 바로 안 지워지는 줄 알았지만, 특정 폴더에서만 오류가 발생했다. 대소문자 구분도 의심이 갔지만, OS 단계에서 처리하는 거라서 내가 어떻게 할 수는 없을 것 같았다. (빡세게 비교하면 되는 거긴 한데... 굳이? 싶다...) 지우려고 하는 폴더와 이름이 같은 폴더가 로컬에 이미 존재할 때, 그리고 그 폴더가 비어 있지 않을 떄 remove로 삭제할 수 없는 에러가 발생했다. ERROR_DIR_NOT_EMPTY 폴더를 delete 처리해야 한다는 건 그 안에 있는 정보 또한 전부 지우는 것과 마찬가지이기 때문에 boost::filesystem::remove_all을 이용하여 폴..
[TIL] 2020-12-07
2020. 12. 7. 23:57
TIL(Today I Learned)
QFile 파일을 쓰거나 읽기 위한 인터페이스를 제공하는 클래스. 텍스트와 바이너리 파일, 리소스를 읽거나 쓸 수 있는 입출력 장치. QTextStream이나 QDataStream과 사용하면 좀 더 편리하게 사용할 수 있다. 일반적으로 생성자를 통해 파일 이름을 넘기지만, setFileName() 함수를 사용해 추후에 따로 설정해 줄 수도 있다. 운영체제에 상관없이 '\'가 아닌 '/'를 사용함에 유의한다! exists() 함수를 사용하여 파일이 있는지 체크할 수 있고, remove()로 파일을 지울 수 있다. open(), close(), flush() 일반적으로 데이터를 읽을 때 QDataStream이나 QTextStream을 사용하지만, QIODevice에 있는 read(), readLine(), ..
[TIL] 2020-12-04
2020. 12. 4. 23:47
TIL(Today I Learned)
CEF(Chrominum Embedded Framework) bitbucket.org/chromiumembedded/cef/src/master/ Bitbucket bitbucket.org REST API 리소스 상태에 대한 표현을 요청자에게 전송함, 주로 HTTP: JSON, HTML, XLT, 일반 텍스트 클라이언트, 서버 및 리소스 구성, 요청이 HTTP를 통해 관리되는 클라이언트-서버 아키텍처 stateless 커뮤니케이션: 요청할 때 클라이언트 정보가 저장되지 않고, 각 요청이 분리(연결되어 있지 않음) 클라이언트-서버 상호 작용을 간소화하는 캐시 가능 데이터 https://meetup.toast.com/posts/92 REST API 제대로 알고 사용하기 : TOAST Meetup REST AP..
[알고리즘 문제] 76. 이항계수(메모이제이션)
2020. 10. 27. 18:33
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int dy[21][21]; int DFS(int n, int r) { if (dy[n][r] > 0) return dy[n][r]; if (r == 0 || n == r) return 1; else return dy[n][r] = DFS(n - 1, r) + DFS(n - 1, r - 1); } int main(void) { int n, r; cin >> n >> r; cout
[알고리즘 문제] 75. 최대 수입 스케쥴(priority_queue 응용문제)
2020. 10. 26. 22:26
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; struct Data { int money; int when; Data(int a, int b) : money(a), when(b) {} bool operator b.when; } }; int main(void) { int n, m, d, i, j, res = 0, max = -2147000000; vector T; priority_queue pQ; cin >> n; for (i = 0; i > m >> d; T.emplace_back(Data(m, d)); if (d > max) max = d; } sort(T.begin(), T.e..
[알고리즘 문제] 74. 최소힙(priority_queue : 우선순위 큐)
2020. 10. 25. 22:18
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int input; priority_queue PQ; while (true) { cin >> input; if (input == -1) break; else if (input == 0) { if (PQ.empty()) cout
[알고리즘 문제] 73. 최대힙(priority_queue : 우선순위 큐)
2020. 10. 25. 21:53
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int input; priority_queue PQ; while (true) { cin >> input; if (input == -1) break; else if (input == 0) { if (PQ.empty()) cout
[알고리즘 문제] 72. 공주 구하기(큐 자료구조로 해결)
2020. 10. 25. 21:41
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, k, i; cin >> n >> k; queue Q; for (i = 1; i
[알고리즘 문제] 71. 송아지 찾기(BFS : 상태트리탐색)
2020. 10. 23. 23:48
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int ch[10001], d[3] = { -1, 1, 5 }; int main(void) { int s, e, x, pos, i; cin >> s >> e; queue Q; ch[s] = 1; Q.push(s); while (!Q.empty()) { x = Q.front(); Q.pop(); for (int i = 0; i < 3; ++i) { pos = x + d[i]; if(pos 10000) continue; if (pos == e) { // 출발 지점을 1로 잡았기 때문에 이전 지점 출력 cout