본문 바로가기

Programming/Algorithm 193

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.
swexpert 미생물 /* 오후 14:41정사각형 구역 안에 케이개의 미생물 군집가로 엔 새로 엔개 총 엔엔 개의 정사각형 셀들미생물이 벗어나는 것을 방지 오께이. 제한 하나씩 줄이기.배치되어 있는 예입니다. 오께이세로위치 가로 위치 미생물 수 이동방향미생물수는 무엇이지 한시간마다 이동방향에 있는 다음 셀로 이동 미생물군집이 이동 후 약품이 칠해진 셀에 도착하면 군집 내 미생물의 절반이 죽고, 이동 방향이반대로 바뀝니다. 미생물 수가 홀수인 경우 반으로 나누어 떨어이지 않으므로, 살아남는 수는원래 미생물 수를 2로 나눈 후 소수점 이하를 버림한 값 오께이 그냥 몫으로 계산하면됩니다.한마리 있는 경우 군집이 사라지게 됩니다. 이동 후 두 개 이상의 군집이 한 셀에 모이는 경우 군집들이 합쳐지게 됩니다.이동 방향은 군집들 중 미.. 2018. 2. 24.
백준 차량 정비소 /*다시 짜보도록 하겠습니다. 최대한 예정와 동일하게. 이름도 현상도 똑같이.먼저 입력은 전부 받고, 접수대에 대해서만 짜보도록 하겠습니다. 1에서 받은 고객 && 2에서 정비한 고객걸러내면 됩니다. */ #include #include using namespace std; int N, M, A, B;int a[10], b[10];int n[10], m[10];int K;int t[1001];int A_log[1001];int B_log[1001];int index, index2;int sum;int ans; int sec;queue recep_waiting, repair_waiting;int time_store[21]; void problemIn() {cin >> N >> M >> K >> A >> B.. 2018. 2. 23.
백준 경사로 일단 경우의 수를 나누고, 어떻게 할 것인지를 설계한다음에,풀이하도록 하겠습니다. 그리고 아이디어를 명확하게 알았으니,왜 경사로 맵을 하나만들 생각을 안했을까?그리고 길이에 대해서 갈 생각을 안했을까? 2018. 2. 22.
백준 뿌요뿌요 /*다시 정돈해서 풀어보도록 하겠습니다. 와일(1){1. 뿌요찾아서 터트리기 cnt++; (터뜨릴 뿌요없으면 break)2. 중력을 이용해서 아래 0 없애기}*/ #include #include #include #include #include using namespace std; int map[13][7];int visit[13][7];int x, y, nx, ny;int dx[] = { 0,0,1,-1 };int dy[] = { 1,-1,0,0 };int chain_cnt, zero_cnt;string a;int curNum;int same_color_cnt, flag;struct points {int x, y;};queue que;vector vec; void problemIn() {for (int .. 2018. 2. 22.
백준 3190 뱀 /*뱀 문제 머리를 다음칸에 위치 시킵니다.if 사과 있, 사과를 먹고 꼬리는 그대로else 사과 없, 꼬리가 위치한 칸을 비웁니다.뱀이 죽는데 몇 초가 걸리는지 확인해보세요.*/ #include #include #include #define SIZE 101using namespace std;int n, k, l;char c;int x, y, nx, ny, d;int dx[] = { 0,0,1,-1 };int dy[] = { 1,-1,0,0 }; // 동서남북int sec;int a, b;int map[SIZE][SIZE];struct points {int x;int y;};queue dir_info;queue snake; void problemIn() {cin >> n >> k; // 맵의 크기, 사과.. 2018. 2. 21.
백준 일곱난쟁이 /*일곱 난쟁이 조합 알고리즘이 아니라 2중 포문 으로 풀어보도록 하겠습니다.*/ #include #include using namespace std;int numArr[9];int total, sum, a, b; void problemIn() {for (int i = 0; i > numArr[i];total += numArr[i];}sum = total;} void solve() {for (int i = 0; i < 8; i++) {sum -= numArr[i];for (int j = i + 1; j < 9; j++) {sum -= numArr[j];if (sum == 100) {a = i;b = j;sum += numArr[j];break;}else {sum += numA.. 2018. 2. 21.
백준 스타트와 링크 /*스타트링크 문제, 엔명은 짝수입니다. 쌍의 능력치의 합입니다. 팀의 능력치는 에스아이제이와 에스제이아이입니다. 엔은4이고 에스가 아래와 같은 경우를 살펴보도록 하겠습니다. 1. 먼저 팀을 나누고,엔이 4이면 4C2 로 0102031223이런식으로 나누게 됩니다. 오께이. 2. 나눈 팀에 대해서 합을 구하고 3. 능력치의 차이를 최소로 하기위해서, 팀1 합 - 팀2합 = 최소값을 찾는 것이 끝.*/ #include #include #define SIZE 21using namespace std; int map[SIZE][SIZE];int visit[SIZE];int n, x, y, nx, ny;int team1, team2;int minVal=1000000000, diff; void problemIn().. 2018. 2. 21.