본문 바로가기

Programming399

백준 치즈 /*치즈,원래치즈1시간 후 치즈2시간 후 치즈마지막에 모두 녹았는지 검사하는 것이 필요합니다.0에 대해서 오케이. 0에 대해서 어떻게 해야하는 것이지. 0에서 연결된 0을 찾고 그 옆에 4방향을 돌려보아서 1이 있으면 지우도록 합니다.일단 0으로 연결된 부분에 대해서 찾아보도록 하겠습니다. 이제 다시 check 배열을 초기화 한다음에,어떻게 해야하지? 이금 보면먼저 0을 찾은 다음에 0에 대해서 체크배열에서 1로 변경한다음에지우는 것에 따라서 */ #include #include using namespace std; #define SIZE 101 int map[SIZE][SIZE];int check[SIZE][SIZE];int n, m;int dx[] = { 0,0,1,-1 };int dy[] = { 1.. 2018. 2. 8.
백준 스타트와 링크 #include #include using namespace std; int map[21][21];int visit[21];int n, ans = INT_MAX; int getAbility(int *arr) {int result = 0;int len = n / 2;for (int i = 1; i 2018. 2. 6.
백준 기출 연산자 끼워넣기 /*depth 개념을 넣어야, 다른 값들이 저장되어 있습니다.*/ #include using namespace std; int n, numArr[101], oper[4];long long maxVal = -100000000, minVal = 1000000000; void dfs(int a, int b, int c, int d, int depth, long long sum) {if (depth == n - 1) {if (maxVal sum) minVal = sum;} if (a > 0) {dfs(a - 1, b, c, d, depth + 1, sum + numArr[depth + 1]);}if (b > 0) {dfs(a, b-1, c, d, dep.. 2018. 2. 6.
백준 조합 일곱난쟁이 오께이 일단 행렬은 bfs 로 푼다고 생각하고, 일곱난쟁이처럼 모든 탐색을 해야하면, 조합을 생각하면 됩니다. 이것이 응용문제 인지, 어떤 문제인지 파악하는 것이 중요합니다. 오께이. 오께이. 이 알고리즘에 대한 것은 꼭 알고 있도록 합니다. #include #include using namespace std;#define FRONT 9#define BACK 7 int numArr[9];int visit[9];int sum; void problemIn() {for (int i = 0; i > numArr[i];} sort(numArr, numArr + 9);} void dfs(int pos, int depth) {if (pos == FRONT && depth == BACK) .. 2018. 2. 2.
백준 로또 /*로또문제풀이 안보고 풀이, dfs 로 완전 탐색해야합니다. 자 보면1 2 3 4 5 6 7 을받습니다. 받고 나서 순서를 파악해보도록 하겠습니다. 1 2 3 4 5 61 2 3 4 5 71 2 3 4 6 71 2 3 5 6 71 2 4 5 6 71 3 4 5 6 7 2 3 4 5 6 7 고하는 것 하나랑 제어하는 것 하나 이렇게 입력으로 들어갑니다.*/ #include using namespace std; int k;int numArr[15];int visit[10]; void dfs(int pos, int depth) { if (pos == k && depth == 6) {for (int i = 0; i k;if (k == 0) b.. 2018. 2. 2.
백준 문제 풀이 분류 브루트 포스재귀함수 일곱 난쟁이로또Z단지 번호 붙이기 2018. 2. 1.
백준 바이러스 /*이것은 dfs 인지 bfs 인지 파악해보도록 하겠습니다. 신종 바이러스 웜 바이러스 네트워크한 컴퓨터 웜 바이러스, 컴퓨터와 네트워크 상에 연결되어 있는 모든 컴퓨터는 웜 바이러스바이러스에 걸리게 되는 컴퓨터의 수를 출력 이거 2차원 행렬만들어서,행렬로 만들어서 풀이가 가능할까?이렇게 만들고 1행에 대해서 포문을 돌려서 연결되어 있는 것을 보면 2 , 5입니다.이것을 큐에 넣습니다. 그리고 큐를 하나씩 꺼냅니다. 그럼 2입니다. 여기서 2와연겨되어 있는것 1, 3, 5 입니다. 그런데 여기서 1 5 에 대해서는 처리했으므로, 처리했다고 하는 visit[] 배열이 필요하겠습니다. 오께이. 그럼 2 5 3 이 들어가고2 처리됬으니, 5 처리 하려면 1 2 6 인데 1 2는 처리한적이 있으니 6 이들어옵니.. 2018. 2. 1.
백준 미로탈출 /*미로 탐색*/ #include #include #include using namespace std; int n, m;bool map[100][100];int check[100][100];int dir[4][2] = { {1,0}, {-1,0}, {0,1}, {0,-1} }; struct points {int x, y;}; void problemIn() {cin >> n >> m;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {int b;scanf("%1d", &b);if (b == 1) {map[i][j] = true;}}}} int bfs() {int cur_y = 0;int cur_x = 0; queue que;que.push({ cur_x,.. 2018. 2. 1.
백준 동전1 #include #include using namespace std; int main() {int n, k;int coins[101];int d[10001] = { 0 }; cin >> n >> k;for (int i = 1; i > coins[i];} d[0] = 1;for (int i = 1; i 2018. 1. 31.
백준 계단 수 #include #define mod 1000000000int main(void) {int N;int Dp[101][10] = {};int sum = 0;scanf("%d", &N);for (int i = 0; i < 10; i++)Dp[1][i] = 1;for (int i = 2; i 2018. 1. 31.