PROGRAMMING
-
Modern C++ 알아보기PROGRAMMING/C++ 2024. 3. 17. 20:26
Modern C++의 기본원칙 RAII(Resource Acquisition is Initialization) : 객체와 자원의 라이프 사이클을 일치시키자. C++이후 나온 언어들은 Garbage Collector(GC)라는 자원 청소기가 있어 프로그램에서 더 이상 사용하지 않는 자원을 자동으로 해제해주는 역할을 한다. 하지만 C++의 경우 사용자가 한 번 설정한 자원은 직접 해제해야만 하는데, 이 과정에서 메모리 누수가 일어날 수 있다. 메모리 누수를 방지하기 위해서는, std::unique_ptr와 vector을 이용하는 것도 좋다. - std::unique_ptr은 자원의 소유권을 객체 하나에게만 위임한다. - vector은 동적 배열의 할당과 해제를 직접한다. 즉, RAII에서는 직접적인 new의..
-
(백준 10844번 쉬운 계단의 수 C++) 라이님 블로그 대회 알고리즘 따라잡기 5) DP(Dynamic Programming) 동적계획법 8PROGRAMMING/알고리즘 2024. 3. 14. 08:16
출근 전 한문제 컷! 이라고 말하기엔 그제부터 풀었던 쉬운 계단의 수 문제 ㅎㅎ 백준 10844번 https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 풀이는 간단하다!(라고 말하고 생각하는데 하루 걸렸다) f(n)을 n자리 계단수의 갯수라고 정의하면 f(n+1) = 2 * f(n) - {n자리 계단수 중 마지막 자리가 0또는 9인 수의 갯수}로 나타낼 수 있다. 마지막 자리가 0 또는 9인 수를 알기 위해 DP[n][10]을 만들어 기록해주기만 하면 완성! 마지막 자리수가 1인 수만이 그 다음 숫자의 마지막 수를 0으로 만들 수 있고, 마지막 자리수가 8인 수만..
-
(백준 12865번 평범한 배낭 C++) 라이님 블로그 대회 알고리즘 따라잡기 5) DP(Dynamic Programming) 동적계획법 7PROGRAMMING/알고리즘 2024. 3. 14. 00:06
오늘은 배낭 문제를 풀어보았다. 회사갈 때 재미로 코딩테스트 푸는 영상을 보는데, 문제를 읽다보니 어제 본 문제랑 똑같았다!!!! 아래 유튜브 아니였으면 평생 못 풀고 이해도 못했을텐데..😖 영상이 진짜 잘 설명해준다!!!!(강추) https://www.youtube.com/watch?v=rhda6lR5kyQ 백준 12865번 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 풀이..
-
(백준 2294번 동전2 C++) 라이님 블로그 대회 알고리즘 따라잡기 5) DP(Dynamic Programming) 동적계획법 6PROGRAMMING/알고리즘 2024. 3. 12. 21:45
내가 풀었다고 보기도 머쓱한 문제ㅎㅎ 이 문제의 풀이는 라이님 블로그를 무조건적으로 참고해야 한다!!! https://blog.naver.com/PostView.naver?blogId=kks227&logNo=220777103650&parentCategoryNo=&categoryNo=299&viewDate=&isShowPopularPosts=false&from=postList 동적 계획법(Dynamic Programming) (수정: 2019-02-07) 안녕하세요. 오늘 소개해 드릴 것은 바로 그 유명한 다이나믹 프로그래밍(Dynamic Programming)입니다. ... blog.naver.com 백준 2294번 https://www.acmicpc.net/problem/2294 2294번: 동전 2 ..
-
(백준 1699번 제곱수의 합 C++) 라이님 블로그 대회 알고리즘 따라잡기 5) DP(Dynamic Programming) 동적계획법 5PROGRAMMING/알고리즘 2024. 3. 12. 08:41
DPDP딥이 아침에 잘 풀려서 두 문제를 풀고 출근하려고 한다! 백준 1699번 https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; const int MAX_N = 100001; int N, DP[MAX_N]; int f(int n) { if (DP[n] != -1) ..
-
(백준 11052번 카드 구매하기 C++) 라이님 블로그 대회 알고리즘 따라잡기 5) DP(Dynamic Programming) 동적계획법 4탄PROGRAMMING/알고리즘 2024. 3. 12. 08:16
한달만에 복귀했다ㅎㅎ 이번주 DP 예제문제 다 뽀개고 다음 알고리즘으로 고고!! 백준 11052번 https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 문제 자체는 어렵지 않다. f(n)을 n개의 카드에 사는데 드는 최대의 금액이라고 정의하면 f(n)은 f(n-1) + (1개의 카드에 지불할 최대 금액), f(n-1) + (2개의 카드에 지불할 최대의 금액), ... ,(f(1) + (n-1)개의 카드에 지불할 최대의 금액) 중 가장 큰 금액이 된다. 그러..
-
뇌를 자극하는 C++ STL 8장) 알고리즘_원소를 수정하는 알고리즘PROGRAMMING/STL 2024. 3. 2. 14:36
평화로운 주말 오후, 요즘 너무 게을러진 것 같아서 반성한다..ㅠㅠ (혹시 저작권에 문제가 있다면 수정하겠습니다!! 개인적인 공부용으로 정리함을 알려드립니당) https://m.hanbit.co.kr/store/books/book_view.html?p_code=B5912645820 뇌를 자극하는 C++ STL 코드 중심으로 설명했다. 코드를 실습하면서 한 단계씩 실력을 쌓을 수 있게 했다. 단계별로 난이도를 조금씩 올리고 예제를 점진적으로 개선하는 방법을 택해 독자가 STL의 동작 원리와 구현 원 m.hanbit.co.kr 여기서 소개하는 모든 알고리즘은 모두 덮어쓰기 모드로 작동한다. 알고리즘이 삽입 모드로 동작하려면 insert_iterator를 사용해야 한다. copy, fill, for_each,..
-
뇌를 자극하는 C++ STL 8장) 알고리즘_원소를 수정하지 않는 알고리즘PROGRAMMING/STL 2024. 3. 1. 18:56
누워서 낮잠 좀 많이 자고 일어났다ㅎㅎ 오늘은 알고리즘 중에서 원소를 수정하지 않는 알고리즘에 대해 정리해보려고 한닷~! (혹시 저작권에 문제가 있다면 수정하겠습니다!! 개인적인 공부용으로 정리함을 알려드립니당) https://m.hanbit.co.kr/store/books/book_view.html?p_code=B5912645820 뇌를 자극하는 C++ STL 코드 중심으로 설명했다. 코드를 실습하면서 한 단계씩 실력을 쌓을 수 있게 했다. 단계별로 난이도를 조금씩 올리고 예제를 점진적으로 개선하는 방법을 택해 독자가 STL의 동작 원리와 구현 원 m.hanbit.co.kr adjacent_find, count, equal, find, for_each, lexicographical_compare max..