프로그래밍 대회에서 배우는 알고리즘 문제해결전략 96

algospot BOARDCOVER

문제 링크입니다: https://algospot.com/judge/problem/read/BOARDCOVER책에 나와있는대로 재귀를 이용하여 문제를 해결했습니다. /*H*W 크기의 게임판이 있습니다.게임판은 검은 칸과 흰 칸으로 구성된 격자 모양을 하고 있는데이 중 모든 흰칸을 세 칸짜리 L자 모양의 블록으로 덮고 싶습니다.이 때 블록들은 자유롭게 회전해서 놓을 수 있지만, 서로 겹치거나,검은 칸을 덮거나 게임판 밖으로 나가서는 안됩니다.게임판이 주어질 때 이를 덮는 방법의 수를 계산하는 프로그램을 작성하세요*/#include using namespace std; //주어진 칸을 덮을 수 있는 네가지 방법//블록을 구성하는 세 칸의 상대적 위치 (dy, dx)의 목록const int coverType[4..

algospot PICNIC

문제 링크입니다: https://algospot.com/judge/problem/read/PICNIC책에 나와있는대로 재귀를 이용하여 문제를 해결했습니다. /*각 학생들의 쌍에 대해 이들이 서로 친구인지 여부가 주어질 때,학생들을 짝지을 수 있는 방법의 수를 계산하는 프로그램을 작성한다.*/#include #include using namespace std; int total; //학생 수bool areFriends[10][10]; //서로 친구인가 확인을 위한 이차원 배열 //taken[i]=i번째 학생이 짝을 찾았는지 여부int countPairings(bool taken[10]){ //남은 학생들 중 가장 번호가 빠른 학생 찾는다 int firstStudent = -1; for (int i = 0;..

algospot BOGGLE

문제 링크입니다: https://algospot.com/judge/problem/read/BOGGLE프로그램 자체는 잘 돌아가는데 아무래도 메모리 초과로 런타임 에러가 계속 뜨는 것 같습니다.여태까지 프로그램을 작성하면서 메모리를 신경쓴 적이 없어서 그런지 어떻게 수정해야할지 고민이네요...혹시 코드를 간략화 시킬 요소가 있다면 댓글로 알려주시면 감사하겠습니다!(2018 1-21 00:48 해결완료) 우선 문자열을 동적할당하면 메모리가 많이 차지하는 것 같아 동적할당을 하지 않기로 했습니다.이후에 기록을 초기화하는 부분을 memset으로 대체하였고 큐 또한 사용하지 않고 printf로 출력했습니다.cout과 cin이 예상외로 상당히 많은 메모리를 차지했습니다.따라서 printf와 scanf 그리고 put..

c++ 연속된 부분 구간 중 그 합이 최대인 구간 찾기

책에 나와 있는 알고리즘이 흥미로워 main 함수까지 작성해봤습니다. /*연속된 부분 구간 중 그 합이 최대인 구간 찾기*/#include #include #include #include #include #include using namespace std; const int MIN = numeric_limits::min();//A[]의 연속된 부분 구간의 최대 합을 구한다 시간복잡도 O(N^3)int inefficientMaxSum(const vector &A){ int N = A.size(), ret = MIN; for (int i = 0; i < N; i++) for (int j = i; j < N; j++) { //구간 A[i...j]의 합을 구한다 int sum = 0; for (int k = i..

algospot FESTIVAL

문제 링크입니다. https://algospot.com/judge/problem/read/FESTIVAL /*커다란 공연장을 빌려서 록 페스티벌을 개최하려고 합니다.이 페스티벌은 여러 날 동안 진행되며, 하루에 한 팀의 밴드가 공연장에서 콘서트를 하게 됩니다.공연장은 하루 빌리는 데 드는 비용이 매일매일 다릅니다.때문에 공연 일정을 잘 정해서 공연장 대여 비용을 줄이려고 합니다.앞으로 N일 간의 공연장 대여 비용을 알고 있다고 합시다. 이 중 L일 이상을 연속해서 대여하되, 공연장을 하루 빌리는데 드는 평균 비용을 최소화하려면 어떻게 공연장을 빌려야할까*/#include using namespace std; int main(void){ int test, rent, team; //테스트 케이스 수, 대여할..