본문 바로가기

Programming/Algorithm 193

백준 1907 탄소화합물 /*13:301907 탄소화합물세 가지 종류의 원자 CHO 화합물을 탄소 화합물.분자플분자는 분자원자숫자워자숫자분자는 하나이상의 원자로 구성숫자는 2이상 9이하,숫자엑스는 그 원자가 한 번만 나타났다. 우리가 관심이 있는 화학식이 딥니다.균형이 있지 않다면 적절한 계수를 주어 화학식의 균형을 맞출 수 있습니다.분자가 여러 개 있다는 것으로 생각합니다. 씨플 1,2,1의 계수를 주어 균형을 맞출 수 있다는 것분자 플 분자는 분자 형태의 화학실 적절한 계수를 맞추어 균형있는 화학식으로 만드는 프로그램 H3 O3 *2 H6 O 12O 6 H2 O4 * 3 H6 O 12최소공배수 이런것들을 파악해야겠습니다.빼는 개념으로 생각을 해야 하나요? C 의 갯수 H 의 갯수 O 의 갯수를 담는 배열을 만들고빼면서 계산을.. 2018. 3. 8.
swexpert 점심시간 푸는중 계단 내려가는 것 처리만 하면댐 /*점심 시간밥을 빨리 먹기 위해 빠른 시간 내에 내려감 계단입구를 에스 사람은 피 1. 계단 입구까지 이동 시간2. 계단을 내려가는 시간(동시에 3명만 올라갈 수 있습니다.)계단의 길이가 주어집니다. 모든 사람들이 계단을 내려가 이동이 완료되는 시간이 최소가 되는 경우계단1, 계단2 로 나누어서, 최대값을 하나 선정하고,최대값들 중에서 최소값을 정하면 됩니다. 1. 계단 2개가 있는데 사람들이 나누어서 들어가는 경우를 생각하면 됩니다. 순열 2. 걸리는 시간대로 사람들을 줄을 세웁니다. 이것을 가지고 있는 하나의 큐를 만듭니다. 3. 큐에서 계단에 내려보냅니다. 이때, 계단은 3명까지 올라갈 수 있습니다. 계단 입구에서 대기줄을 받는 어레이 2개,사람 번호, 도달 시간 계단 위에 올라와 있는 것 하나에.. 2018. 3. 5.
swexpert 차량정비소 /*1322 차량 정비소1455 2:30 2시간 30분ㄴ t1, 접수대1,2 정비소1,2 t2 이렇게 총 6가지 장소가 있습니다.그리고 1번의 사람은 어디어디에서 받았는지 기록하는 것 추가요. 먼저 t1에 대기를 시켜둡니다.그리고 먼저 온 사람부터 빠져나가므로 queue 형태가 맞습니다.그리고 접수대에 위치하는 사람을 저장하는 장소를 만듭니다.접수대 1,2, 3.... 이상이 될 것 같은데 자료 구조를 어떻게 사용하지?접수대에는 사람넘버와 들어온 시간, 접수대에서 소요되는 시간을 계산하면 됩니다. 처음 시간을 보면 1 은 1,2 를 저장하면 됩니다. 2 는3 은4 는5 는*/ #include #include #include using namespace std; int N, M, K, A, B;int an.. 2018. 3. 5.
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.