목록분류 전체보기 (16)
CPP-Shooter's Life
2048 게임을 직접 시뮬레이션 해보는 문제다.기본적인 게임 규칙을 이해하고 짜는 것이 중요하다. 최대 5번 이동시켰을 때 남는 블록들 중 최대 값을 구하는 것이라매 이동마다 상하좌우 4방향에 대해 재귀 호출로 게임판을 갱신시켜준다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125..
이 문제도 다이나믹(DP) 문제이다. 제일 먼저 생각한 것은그림들을 높이 순으로 오름차순 정렬시키는 것이다. 판매가능 그림의 조건이 부분적으로 S이상만큼만 보이면 되기에최대한 그림의 높이가 낮은것부터 높은 순으로 배치하면 판매가능 그림의 갯수가 많아질 것이기 때문이다. 이를 기본 전제로 깔고 가면서각 그림의 높이와 가격을 비교하며 최대합을 구해야 한다.캐싱할 DP 배열의 값은 각 그림이 배치될 때 구할 수 있는 가격의 최대합이다. 그리고 각 그림별로 순회하면서 이전 그림들과의 높이 차를 비교하면서가격의 합을 비교, 저장하면 되겠다 생각했는데....처음부터 잘 풀려고 하면 힘드니 일단 쉽게 풀 수 있으나 무식하게 시간초과 나는 코드를 짜보았다. 1234567891011121314151617181920212..
주어진 문제에서 N과 K가 작을 때의 경우의 수를 각각 체크해보자.0~N까지의 정수 K개를 더해 합이 N이 되는 경우의 수를 구해본다. 순서는 각 N에 대해 K가 증가하는 순서이다. 그런데, 이전 값과의 차이를 잘 보면... N (합) K (정수 갯수) 경우의 수 이전 값과의 차이 (K=1일 때부터 체크) 1 1 1 (1 자신) 0 1 2 2 (0+1, 1+0) 1 1 3 3 (0+0+1, 0+1+0, 1+0+0) 1 1 4 4 (0+0+0+1, 0+0+1+0 ......, 1+0+0+0) 1 ...... ...... 2 1 1 (2 자신) 0 2 2 3 (02, 20, 11) 2 2 3 6 (002, 020, 200, 110, 011, 101) 3 2 4 10 (0002, 0020, 0200, ......
안드로이드 앱 기초 공부의 일환으로 메모장 앱을 만들어보았다.버튼을 통해 텍스트파일을 저장,로드,삭제하는 기능을 구현하고에디트 텍스트 (Edit Text) UI를 통해 메모 텍스트를 멀티라인 입력할 수 있게 하였다. 구현한 메인 액티비티와 레이아웃 소스는 아래와 같다. 개발 환경 : Android Studio 3.3 minSdkVersion : 21 (Lolipop) targetSdkVersion, compileSdkVersion : 27 (Oreo) activity_main.xml123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 Colored by Color Scriptercs Main..
** 출처 : http://rextester.com/SAY51073 ** #include #include #include #include #include #include namespace fs = std::experimental::filesystem ; // list of paths of all files under the directory 'dir' when the extenstion matches the regex// file_list searches recursively into sub-directories; file_list searches only the specified directorytemplate std::vector file_list( fs::path ..
현재 폴더 내에 존재하는 파일들만 순회(주의 : 서브 폴더는 제외)하면서 찾기 위한 표준 반복자로서,C++17에 추가되었다.포함할 소스와 사용할 네임스페이스는 아래와 같다. #include using namespace std::experimental; // 내부 API들이 이걸로 감싸져 있다.. (VS2015 기준.) 2017년 10월 기준으로 아직은 정식 표준이 아니다. (실험 기능) ** 예제 코드 bool CAtlasGroup::LoadAtlas_All(){ //폴더 내 모든 스프라이트를 찾아 로드하고, //SpriteCache를 다시 구성하여 저장시킨다. if (sprCache == nullptr) sprCache = new SDLSpriteCache(); sprCache->ClearCache()..
최근 윈도우10에 고질적인 메모리 누수를 해결하는 방법을 우연히 보게 되었다.윈도우 OS 자체에 발생하는 메모리 누수야 여러 원인이 있을 것이나, 윈도우 8이상부터 도입된Windows Network Data Usage Monitoring(NDU) 라는 기능이 가끔 원인이 될 수 있다는 정보를 입수한다. 최근 작업관리자를 켜보면성능 탭에 찍히는 메모리 사용량과 사용자 탭에 찍히는 메모리 사용량에 큰 차이가 나는 현상을 발견했다. 정확히는 성능 탭에 찍히는 메모리 사용량이 훨씬 큰 것을 확인했다. 두 탭에 찍히는 메모리 사용량이 서로 다른 것을 보고 혹시 나도 메모리 누수 버그에 걸린건가 싶어 NDU 기능을 원인으로 하는 해결법을 시도해보았다. 구체적인 해결 방법은 이렇다. 1. 윈도우키+R (윈도우-실행)..
#ifdef 같은 전처리기 사용으로컴파일되지 않는 영역의 코드가 보통은 회색으로 표시되는데.. 만약 코드가 활성 영역임에도 불구하고 비활성화 된 것처럼 보일 경우이를 해결할 수 있는 방법이 있다. 솔루션 있는 폴더에 들가면 .ncb 라 해서VC++ Intellisense Database 유형으로 되어있는 파일이 존재한다. Visual Studio가 실행 중이지 않은 상태로 해당 파일을 삭제하고 프로젝트를 리빌드하면 문제가 해결된다.