알고리즘 1607

algospot CLOCKSYNC

문제 링크입니다: https://algospot.com/judge/problem/read/CLOCKSYNC책에 나와있는대로 재귀를 이용하여 문제를 해결했습니다.속도가 상당히 느리기 때문에 보완을 해야할 것 같습니다. /*4*4개의 격자 형태로 배치된 16개의 시계가 있습니다.이 시계들은 모두 12시, 3시, 6시, 혹은 9시를 가리키고 있는데이 시계들이 모두 12시를 가리키도록 바꾸는 프로그램을 작성하시오 스위치를 누를 때마다 해당 스위치와 연결된 시계들의 시간은 3시간씩 앞으로 움직입니다.스위치 연결된 시계들은 링크 참고*/#include #include #include using namespace std; #define INF 9999#define SWITCH 10#define CLOCK 16 //l..

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; //테스트 케이스 수, 대여할..