diff --git a/Changhwan/16236.cpp b/Changhwan/16236.cpp new file mode 100644 index 0000000..eaf1200 --- /dev/null +++ b/Changhwan/16236.cpp @@ -0,0 +1,82 @@ +#include +#include +#include +using namespace std; + +typedef struct _feed { + int x; + int y; + int mv_cnt; +}feed; + +int search_feed(); + +int N = 0; +char map_c[20][20]; +int map[20][20] = {10, }; +int map_t[20][20] = {10, }; +int baby_shark_sz = 2; +int baby_shark_lc[2] = {0,}; +int next_tar[2] = {0, }; + +int main(void){ + + int cnt = 0; + int move = 0; + + cin >> N; + + for(int i = 0; i < N; i++){ + cin >> map_c[i]; + } + + for(int i = 0; i< N; i++){ + for(int j = 0; j 0){ + + } + + return 0; +} + +int search_feed(){ + int cnt = 0; + int shortest = 40; + for(int i = 0 ; i < N; i++){ + for(int j = 0; j < N; j++){ + if(map[i][j] < baby_shark_sz && map[i][j] != 0){ + if (shortest > (abs(i-baby_shark_lc[0]) + abs(j-baby_shark_lc[1]))){ + next_tar[0] = i; + next_tar[1] = j; + shortest = (abs(i-baby_shark_lc[0]) + abs(j-baby_shark_lc[1])); + } + } + } + } + for(int i = 0 ; i < N; i++){ + for(int j = 0; j < N; j++){ + if(map[i][j] < baby_shark_sz && map[i][j] != 0){ + if (shortest == (abs(i-baby_shark_lc[0]) + abs(j-baby_shark_lc[1]))){ + cnt++; + } + } + } + } + + return cnt; +} + +int move_shark(int **map){ + queue feed_q; + +} diff --git a/Changhwan/baekjoon17825_yuut.cpp b/Changhwan/baekjoon17825_yuut.cpp new file mode 100644 index 0000000..6c0c10b --- /dev/null +++ b/Changhwan/baekjoon17825_yuut.cpp @@ -0,0 +1,95 @@ +#include +#include +using namespace std; + +struct map { + int index; + struct map* next; +}; +int maxcost = 0; +int d[10]; +void travers(int k1, int k2, int k3, int k4, int dice, int i, int cost); +struct map m[33]; +int score1[33] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 13, 16, 19, 22, 24, 28, 27, 26, 25, 30, 35 }; +int main(void) { + for (int i = 0; i < 10; i++) { + cin >> d[i]; + } + + for (int i = 0; i < 33; i++) { + m[i].index = i; + m[i].next = NULL; + } + m[5].next = &m[22]; + m[24].next = &m[30]; + m[32].next = &m[20]; + m[10].next = &m[25]; + m[26].next = &m[30]; + m[15].next = &m[27]; + + travers(0, 0, 0, 0, 0, 0, 0); + travers(0, 0, 0, 0, 0, 1, 0); + travers(0, 0, 0, 0, 0, 2, 0); + travers(0, 0, 0, 0, 0, 3, 0); + + cout << maxcost; + + return 1; +} + +void travers(int k1, int k2, int k3, int k4, int dice, int i, int cost) { + int k[4] = { k1, k2, k3, k4 }; + int loc = k[i]; + int done = 0; + struct map* m_temp; + + int cnt = d[dice]; + if (cnt <= 20 && m[loc].next == NULL) { + loc += cnt; + if (loc > 20) { + loc = 21; + } + } + else if (m[loc].next != NULL || cnt >= 22) { + for (cnt; cnt > 0; cnt--) { + if (m[loc].next != NULL) { + m_temp = m[loc].next; + loc = m_temp->index; + } + else { + loc++; + } + if (loc == 20 && cnt > 1) { + loc = 21; + break; + } + } + } + + dice++; + if (dice < 10) { + k[i] = loc; + if (k[i] != 21) { + cost += score1[loc]; + } + + for (int i = 0; i < 4; i++) { + if (k[i] != 21) { + travers(k[0], k[1], k[2], k[3], dice, i, cost); + } + } + + if (k[0] == 21 && k[1] == 21 && k[2] == 21 && k[3] == 21) { + if (cost >= maxcost) { + maxcost = cost; + } + } + } + else { + if (cost >= maxcost) { + maxcost = cost; + } + } +} + +