본문 바로가기

전체 글86

알고리즘 스터디 https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 구명보트 darklight sublimevimemacs C++ 문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 .. 2020. 7. 22.
보편참조에 대한 중복적재 대신 사용할수 있는 기법들 1 1. 중복적재를 포기한다 중복 적재 버전에 각자 다른 이름을 붙여 보편 참조에 대한 단점을 피할 수 있다. 하지만 생성자의 이름은 언어에 의해 고정되기 때문에 중복적재가 필요할 수 있다. 2. const T& 매개변수를 사용한다. 보편 참조 매개변수 대신 const에 대한 왼값 참조 매개변수를 사용한다. 이런 설계는 원하는 만큼 효율적이지 않다. 3. 값 전달 방식의 매개변수를 사용한다 참조 전달 매개변수 대신 값 전달 매개변수를 사용한다. 복사될 것이 확실한 객체는 값으로 전달하는 것을 고려하는 것이 좋다. 앞에 설명했던 예제의 Person을 사용해 결과를 보도록 하자 class Person { public: explicit Person(std::string n)// T&& 생성자를 대체한다 : nam.. 2020. 7. 22.
보편 참조에 대한 중복적재를 피하라 // 사람 이름 하나를 매개변수로 받고, 현재 날짜와 시간을 기록하여 전역 자료구조에 추가하는 예제 std::multiset names;// 전역 자료구조 void logAndAdd(const std::string& name) { auto now = std::chrono::system_clock::now();// 현재 시간을 얻고 log(now, "logAndAdd");// 로그에 기록 names.emplace(name);// 이름을 전역 자료구조에 추가 } std::string petName("Darla"); logAndAdd(petName);// 왼값 std::string을 넘겨줌 logAndAdd(std::string("Persephone"));// 오른값 std::string을 넘겨줌 logAnd.. 2020. 7. 21.
알고리즘 스터디 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 문제 설명 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 .. 2020. 7. 20.
std::move, std::forward std::move와 std::forward는 캐스팅을 수행하는 함수(함수 템플릿)이다. std::move는 주어진 인수를 무조건 오른 값으로 캐스팅하고, std::forward는 특정 조건이 만족될 때에만 캐스팅을 수행한다. std::move를 구현해보자 template// C++11 버전 typename remove_reference::type&& move(T&& param) { using ReturnType = typename remove_reference::type&&; return static_cast(param); } template// C++14 버전, remove_reference_t와 decltype 사용 decltype(auto) move(T&& param) { using ReturnTy.. 2020. 7. 17.
알고리즘 스터디 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 큰 수 만들기 darklight sublimevimemacs C++ 문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 s.. 2020. 7. 16.