![(백준/ C++) 1106 - 호텔 / 다이나믹 프로그래밍](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1N6Mm%2FbtsIvVhJWRN%2FOZrXK7hJyWIseAWzWIOad1%2Fimg.png)
" (백준/ C++) 1106 - 호텔 " https://www.acmicpc.net/problem/1106 1106 - 호텔첫째 줄에 C와 형택이가 홍보할 수 있는 도시의 개수 N이 주어진다. C는 1,000보다 작거나 같은 자연수이고, N은 20보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 각 도시에서 홍보할 때 대는 비용과 그 비용으로 얻을 수 있는 고객의 수가 주어진다. 이 값은 100보다 작거나 같은 자연수이다.www.acmicpc.net 이 문제는 냅색과 비슷하다.다른 점이 있다면 중복으로 넣을 수 있는 점? 냅색 문제는 물건 하나 씩 넣는다. 가장 간단해보이는 예제 입력1번을 보고 DFS를 이용하여 풀 수 있는 방법을 고민해봤다. " C명(12명)을 확보하면서 최소의 비용이 들어..
![게임 회사 용어 정리 (아마 계속 업데이트 될거임.)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkZ3qN%2FbtsIwRegVSV%2Fygf2R7DMAJw6tP5Xck6sD1%2Fimg.jpg)
1. IBT (Interal Beta Test)- 임직원들을 대상으로 사내 테스트 2. CDN (Content Delivery Network)- 지리적으로 분산된 서버들을 연결한 네트워크 - 전 세계 CDN 서버의 분산 특성은 서버에서 캐시된 콘텐츠를 사용자에게 더 가깝게 제공함으로써 성능을 향상시킨다.(출처: 베타 플러스) 3. Launcher (런쳐) - 게임을 실행하는 실행파일을 말한다. exe- 바이너리라고 칭하기도 함. 4. OTP (One Time Password) 5. Mac Address (media access control address)- 네트워크 세그먼트의 데이터 링크 계층에서 통신을 위한 네트워크 인터페이스에 할당된 고유식별자. (출처: 위키백과)🎞 상황극??? : 맥...?..
![(백준/ C++) 2629 - 양팔저울](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctaNjW%2FbtsItIB6zoO%2F2FfeeEhbnGo7pRagwYmkv1%2Fimg.png)
"(백준/ C++) 2629 - 양팔저울"https://www.acmicpc.net/problem/2629 아마 .. 양팔저울 문제 설명에 냅색 알고리즘으로 푸는 문제라고 적혀 있지 않으면 오랫동안 못 풀었을거 같다.. ^^;; 냅색과 같이 나올수 있는 무게의 경우를 만드는 방식으로 풀이를 했다. 점화식은 (가)저울에만 추를 둘수 있다고 생각 하고 경우의 수를 고려하였다. (가)에 A추가 있는 경우 → (가) A추 + 구슬 = (나) B추 → (가) 구슬 = (나) B추 - A추 (나)에 A추가 있는 경우 → (가) 구슬 = (나) B추 + A추(가), (나)에 A추가 모두 없는 경우 → (가) 구슬 = (나) B추 처음에는 이분탐색으로 찾으려 했으나 메모리 문제로 실패 ! DP[비교대상개수][무게..
![binary search & lower bound & upper bound [c++ 구현]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcO74KY%2FbtsIJGrdkrg%2FfUk5v5KDOVWK6KCEoB57Sk%2Fimg.jpg)
' binary search & lower bound & upper bound ' 코딩 테스트를 하다보면 이분 탐색을 자주하게 된다. 대부분 내장함수로 사용하면 되지만, 문제 종류에 따라서 직접 구현해 조건을 더해야 풀 수 있는 경우가 있다. c++ 기준으로 이진 탐색 함수는 총 3가지가 있다. 이 세가지 모두 이진 탐색이 기반인 알고리즘이므로 데이터가 오름차순으로 정렬이 되어 있어야 한다. 1. [ #include ] std::binary_searchval값이 있는지 없는지 확인하는 알고리즘 [ return bool ] std::lower_bound를 이용하여 구현한 알고리즘. 2. [ #include ] std::lower_bound val값의 시작 위치를 찾는 알고리즘 3. [ #include..
![(c++) 함수 뒤 const](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtqi1G%2FbtsIff1jDPn%2Fa40cQSrPkYchE8DjomWBl0%2Fimg.png)
" 함수 뒤 const " class Test { public: void ResizeVector(int num) const { vec.resize(num); } private: vector vec;} 위에 있는 함수는 컴파일이 될까? 정답은 안된다. 이유는 함수 뒤 const 때문에 vector 내장함수인 resize를 사용할 수 없다.함수 const에 대해서 간단하게 알아보자. [ 의미 ] - 해당 함수에서는 해당 객체의 멤버변수를 변경할 수 없다. - 여기서 이번에 새로 알게 된 사실은 멤버변수에 순차 컨테이너 vector가 있었는데 vector 내장 함수도 제한 받는다는 것이다.어찌보면 당연한거지만 ...? 컴파일 전에 오류메시지를 뱉는게 신기했다...
![[windbg] windbg 사용하기, 덤프 분석하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJjbvp%2FbtsId8AlwfT%2FZ7bjY2AASbK42kScmE6Hok%2Fimg.png)
"[windbg] windbg 사용하기, 덤프 분석하기" 1. 덤프를 읽을 심볼과 심볼에 맞는 소스코드 경로를 연결시킨다. 2. 덤프를 windbg에 드래그 드롭 또는 open으로 파일을 열면 이런 화면을 볼수 있다.Loading Dump File : 덤프 파일의 위치, 덤프 종류 Executable search path is : 덤프가 발생한 OS Debug sesstion time : 덤프 발생 시점 시간 Process Uptime: 부팅 이후 동작한 시간 3. !analyze -v 명령어 실행 !analyze-v 명령어를 실행하면 더욱 자세하게 덤프 내용이 나온다.FAULTING_IP: 어떤 부분에서 문제가 일어났는지 표시한다. callstack의 마지막 부분이다. KERNRLBASE.ddl..
"[ assembly 명령어 ] mov, lea" mov ( move ) - 데이터를 복사하는 명령어 (*이동이 아님 주의) [예시]1. mov eax, dword ptr [ a ] : a의 주소가 가리키는 4바이트(Dword) 값이 eax에 저장한다. 2. mov eax, [adr] : adr주소가 가리키는 값을 eax에 저장한다.3. mov dword ptr [ a ], 3 : a에 3 값을 저장한다.4. mov eax, [ rbx + 8 ] : rbx주소값에 + 8을 한 주소로 가서 그 안에 있는 값을 eax에 복사한다. 5. mov [rcx], rax : rcx레지스터가 참조하는 주소의 메모리에 rax 레지스터의 값을 저장한다. Lea ( Load Effective Address )- 유효..
![(c++20) STL::Container #2 - contains, starts_with, ends_with](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFPxiM%2FbtsIe3MzKr4%2F7fDHkJ6RoZXAs8JWBQwfHK%2Fimg.png)
"c++20 STL::Container #2" 1. contains기존 map, set 데이터 find함수 사용 시 반복자와 end반복자가 같지 않은 지 비교하는 방식이였다. std::set s {1, 2, 3, 4, 5}; auto findset = s.find(2);if (findset != s.end()){ cout m {{1, 1000}, { 2, 2000 }}; auto findmap = m.find(2); if(findmap != m.end()){ cout second c++20에서 새로 추가 된 contains는 associate container의 내장함수로 찾으려는 키값을 넣으면 true, false로 그 key의 존재 여부를 알 수 있다. if (findset.contains(2)..
![(c++20) STL::Container #1 - std::to_array, erase, erase_if](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoQKcp%2FbtsIcxoPyhz%2FoZsKPFXUcH0Ntd1M2UcnEK%2Fimg.png)
"c++20 STL::Container #1" 1. std::to_array std::array 만드는 방법이 추가되었다. //암시적 타입 추론 auto ToArray = std::to_array("Hello World");//명시적 타입 추론auto ToArray = std::to_array({ 1,2,3,4,5,6 }); 2. std::erase, erase_if 기존에 vector 데이터 중 특정한 조건에 부합하는 데이터를 삭제하려고 할 때 여러가지 방법과 문제점을 알아보자.// 1번 ====================================================================vector vec {-1, 2, 3, 4, -5, 7, -2, 3 }; for (auto i..
![(c++20) Conditional Explicit Constructor](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8yrlH%2FbtsIde26Eg7%2FKkbTpHcoCiXMYB55BriLrk%2Fimg.png)
"(c++20) Conditional Explicit Constructor" 1. explicit // c++11 struct NoExplicit{ NoExplicit() = default; NoExplicit(int n) { cout TestNoExplicit(10); // - ???? error X TestNoExplicit() NoExplicit struct 자료형을 매개변수로 받고 있다. 그럼 매개변수에 NoExplicit struct 이 외에 다른 자료형이 들어간다면 에러를 뱉어내는게 정상이다. 하지만 위 코드에서 TestNoExplicit(10) 에러를 뱉어 낼거 같지만 정상 작동한다. 이는 컴파일러에서 "10"을 NoExplicit(int n)" 생성자를 이용하여 암시적 형변환을 ..