728x90
반응형

투 포인터 기법 2

코딩테스트 : 구명보트

해당 문제는 무인도에 갇힌 사람들을 한 번에 최대 2명까지 태울 수 있는 구명보트를 이용해 구출하는 문제로 이때 필요한 구명보트의 최솟값을 반환하는 문제이다. 해결 방법 사람들의 몸무게를 정렬시켜 왼쪽은 가장 몸무게가 적게, 오른쪽은 가장 몸무게가 많게 정렬한다. 투 포인터 기법을 사용해 가장 가벼운 사람과 가장 무거운 사람의 몸무게를 동시에 체크해 가장 효율적인 배치를 찾는다. 투 포인터 기법에 대한 자세한 설명은 아래 블로그에 정리해놨다. Two Pointer 기법1차원 배열에서 각자 다른 원소를 가리키는 2개의 포인터를 사용하여 목표값을 구하기 위한 기법완전탐색 O(n^2)보다 효율적인 O(n)으로 동작정렬된 배열에서 효율적으로 동작한다. 왜?leftP는 가장jinho082008.tistory.co..

코딩테스트 : 롤케이크 자르기

해당 문제는 주어진 배열을 두개로 나누는데 양 쪽 배열의 숫자 종류의 수가 같게 나누어야 하는 문제로 두 개의 배열을 사용하여 각각의 조각에 있는 토핑 종류의 수를 계산하는 방법으로 풀 수 있다. 왼쪽 조각의 토핑 종류 수를 저장하고, 오른쪽 조각의 토핑 종류 수를 저장한 후, 두 조각의 토핑 종류 수가 같은 경우를 카운트하면 된다.#include #include #include #include using namespace std;int solution(vector topping) { int answer = 0; // 공평하게 나누어진 방법의 수 vector a(topping.size(), 0); // 왼쪽 조각의 토핑 종류 수를 저장하는 배열 vector b(topping.size(),..

728x90
반응형