본문 바로가기

Programming399

swexpert 보호필름 /*0905보호 필름스스로 풀어보기*/ #include #include using namespace std;#define SIZED 13#define SIZEW 20 int map[SIZED][SIZEW];int medical[SIZED];int D, W, K;int ans;int con[SIZEW];int maxCon[SIZEW]; void problemIn() {cin >> D >> W >> K;for (int i = 0; i > map[i][j];}}} void dfs(int curD, int medCnt, int prevCon[SIZEW], int prevMaxCon[SIZEW]) {if (medCnt >= K) {r.. 2018. 3. 5.
swexpert 보호필름 #include #include using namespace std;const int DSIZE = 13;const int WSIZE = 20;int D, W, K; int film[DSIZE][WSIZE];int minChemicalCnt;int chemical[DSIZE]; void solve(int curD, int chemicalCnt, int prevContinuum[WSIZE], int prevMaxContinuum[WSIZE]) { if (chemicalCnt >= minChemicalCnt) return;if (curD == D) {bool isSatisfied = true;for (int i = 0; i < W; i++) {if (prevMaxContinuum[i] < K) {isSati.. 2018. 3. 2.
swexpert 벌꿀채취 벌꿀채취 문제, dfs 와, 최대값을 구하는 것을 어떻게 할 것인지에 대해서 처리하는 문제입니다. 어떤 자료 구조를 써주어야 하는지, 그리고 값은 어떻게 저장을 하고 있어야 하는지에 대해서 헷갈렸습니다. 그리고 임의로 첫번째 간것에 대해서 0 처리를 해줬는데, 이렇게 했을 경우 반례가 생깁니다. 그러므로 정확히 코딩을 하기 위해서 visit 를 해주고, 그것에 대해서도 visiit map 을 넣어두고 코딩에 적용을 해야 합니다. find_max_2 함수에 대해서 정리를 해보도록 하겠습니다.그럼 2차원 배열이 되서 헷갈릴 수도 있는데?오께이. 최대한 헷갈리지 않도록...만약 다른 문제에서 여러번 3회 이상이면 동시에 짜줄 텐데 그러지 않기 때문에. 그리고 dfs 로 풀기 위해서 가져가야하는 것이 인덱스 그.. 2018. 3. 1.
swexpert 점심 식사 시간 어떤 자료구조를 써야 좋을까요. 정비소 문제랑 상당히 비슷합니다. 관리해야 하는 변수가 많이 있습니다.여기서 어떻게 분리해서 사용가능할까요? 먼저 벡터를 쓸지 큐를 쓸지 결정을 하고, 하나에 대해서 정독을 해서 따라가보도록 하겠습니다. 그런데, ㅋ큐의 경우에는 포문을 사용해서 돌릴 수가 없고, 단순하게 제일 앞에 있는 것만 가져와서 사용하고 지우기가 가능합니다. 지우고 채우고를 반복하는 것이기 때문에 큐가 좋을지는 아직 불확실합니다. 어떤 알고리즘이 괜찮을지 한번 생각해보도록 하겠습니다. /*사람 번호를 가지고 가겠습니다.1,2,3, 4,5,6 사람 번호와 위치를 먼저 t 에 넣겠습니다.그리고 t2 에는 모두 나왔을 때를 넣겠습니다. 구조체를 사용해서 변수 관리만 잘해주면 되겠습니다. */ #includ.. 2018. 2. 27.
swexpert 탈주범검거 bfs 문제입니다. 원래 계속 뻗어나가는데, 뻗어나가는 단계에서, 조건이 더 들어간다는 것이 차이점 입니다. 그리고 초기화의 중요성에 대해서 다시 알수 있는 문제였습니다. 초기화 해야하는 것은 무엇인지 다시 적어봅니다. que, map, visit, ans 입니다. 그리고 보통 max 에 들어가는 변수에 대해서는 초기화를 시켜주면 됩니다. /*1437탈주범 검거bfs 보다 dfs 가 빠르므로 dfs 로 풀어야 하는가?갔던길에 대한 체크를 해야겠습니다. */ #include #include using namespace std;#define SIZE 55 // 51;int N, M, R, C, L;int map[SIZE][SIZE];int visit[SIZE][SIZE];int x, y, nx, ny, t;.. 2018. 2. 27.
swexpert 등산로 일단 생각한대로 코딩을 하면 풀린다. 이것 큐2개 넣어서, 처음에 케이에 대해서 깎은 맵을 형성한 다음에, 오께이. 다른 사람들 것을 보니 dfs 로 풀이가 많은 것 같다. 깊이 부터 파는 것. 이 문제의 원래 핵심이 아니였을까? bfs 로 풀 경우, visit 맵에 대해서 계속해서 관리를 해주어야 하고, 가장 멀리 갔을 때의 깊이를 찾아주어야 한다. 다음에 이런 문제를 만났을 때는 dfs 로 풀이를 해보도록 하겠습니다. 그리고 문제를 유심히 읽어서, 가능한 변수에 대해서 꼭 알아야 합니다. 이번에 맵의 K만큼이 아니라 최대 K 만큼 팔 수 있는 것이므로, 이것에 대해서 코딩을 해주어야 합니다. 48개에서 막혀서 당황하지 말고, 문제를 반드시 잘 읽고, 코드도 제대로 다시 읽어보도록 합니다. 만약에 이것.. 2018. 2. 27.
swexpert 디저트카페 dfs 로 풀이를 하는데, 갔던 넘버는 가지않고, 돌아와야 합니다. 오께이. 설계를 하고, 이것을 dfs 돌리면 됩니다. 여기서 하나 주의해야할 점은 dfs 안에 들어가 있는 변수는 글로벌 변수가 아닌 지역 변수를 사용해서 기존의 값들을 저장해야합니다. 글로벌으로 하면 연동이 되어, return 했을때의 값들을 잃어버리게 됩니다. 초기화도 어디서 시켜주어야 하는지 명확히 구분을 짓습니다. 사용이 끝나면 초기화해주는 것.특히나 dfs 에서는 return 하는 곳과 return 하기전에 방문한 곳을 지워주는 것이 필요합니다. /*갈 수 있는 곳까지 가고 3명의 방향전화을 한 뒤에, 갈 수 있는 곳 까지 가는 것은 와일문을 돌립니다.만약에 depth 가 4가 되고 갈 수 있는 곳 까지 간다음에, 간 자리가처음.. 2018. 2. 27.
swexpert 디저트 카페 /*17:34디저트 까페엔엔 도로가 있습니다. 해당 디저트 까페에서 팔고 있는 디저트의 종류를 의미합니다.대각선 방향으로 움직일 수 있는 길들이 있습니다. 대각선 방향으로 움직이고 사각형 모양을 그리며 출발한 카페로 돌아와야 합니다. 사각형 모양을 그리는 것대각선방향으로 움직이는 것해당 지역 벗어나기 불가.같은 종류의 디저트 엑스 -> 디저트의 종류 비지트 배열로 만들기.하나만 먹는것도 안됨 - > 이동 해야 합니다.왔던길도 안되지 -> 중복이니. 되도록 많은 디저트를 먹기.디저트의 수를 정답으로 출력하는 프로그램을 작성하세요. 오께이.디저트를 먹을 수 없는 경우 -1 을 출력하면 됩니다. 완전탐색입니다.큐를 사용해서 가도 됩니다. 갈 수 있는 길을 저장해둔다음에, 그것으로 다시 돌아오면 되니까.출발하는.. 2018. 2. 26.
swexpert 홈 방범 서비스 케이를 만드는 것이 문제입니다. 케이를 어떻게 만들 것인가를 고민해봅니다. 그리고 어디서 틀린지 디버깅을 해보도록 하겠습니다. 케이를 만드는 방법이 다릅니다.보면, 케이를 만드는 방법에서, /*1. 맵을 받고2. 먼저 케이를 얼마만큼 가능한지 살펴보고,3. i,j 를 맵 처음부터 끝까지 돌리고,하나의 i,j 에 대해서 K =1 ... 할 수 있는데까지 해보고, 그곳에서 가능한 집의 숫자를 체크합니다. */ #include #include #include using namespace std; #define SIZE 25int map[SIZE][SIZE];int visit[SIZE][SIZE];int N, M, K, x, y, nx, ny, T;int dx[] = { 0,0,1,-1 };int dy[] = .. 2018. 2. 26.
swexpert 수영장 /*16:44분가장 적은 비용으로 수영장을 이용1일이용1달 이용 매달 1일부터시작3달 이용권 3달 매달 1일이부터 시작11월 12월에다 3달 이용권 가능1년 이용권 며년 1일1부터 시작합니다.매년 1월 1일만 살 수 잇는 것인가? 각 달의 이용 계획은 테이블의 형태로 수립각 이용권의 요금과 각 달의 이용 계획이 입력.예시를 보면,1일 이용권 1달 이용권 3달 이용권 1년 이용권 가격이 나오고가장 적은 경우 오꼐이모두 1일 이용권모두 1달 이용권3월 1일 이용권456월은 3달 이용권가장 적은 비용으로 수영장을 이용한 경우 4번의 경우 정답은 110 원dfs 문제로 풀어보도록 하겠습니다. if returnpos, depth 가져가야하는 파라미터를 정확하게 알기. 경우의 수를 보면1. 모두 1일 이용권으로 이.. 2018. 2. 24.