본문 바로가기

Programming/Algorithm 193

백준 z /*예를 들어서 3 7 7 을 받았다고 가정해봅니다.그럼 2^3 2^3 = 8 * 8 행렬에서 7 행 7얄은 몇번째입니까?를 물어보는 문제입니다. 오께이. 어디에 위치하는가? 이 함수는 2차적인 것입니다. 일단 시간 초과에 대해서 고려하지 안하고, 저것에 대해서 풀어보도록 하겠습니다.맵을 형성하지 말고, 어디에 있는지 찾은 다음에, 숫자만 더해주는 식으로 풀어보도록하겠습니다. 예를 들어서 지금 3 7 7 에 대해서 풀어보도록 하겠습니다.*/ #include #include using namespace std; long long n, r, c;long long sum; void problemIn() {cin >> n >> r >> c;} void solve(int depth) { if (depth == 1.. 2018. 2. 8.
백준 스타트와 링크 /*먼저 팀을 나눕니다. 123 456 이면 123 / 456 팀 이렇게 말입니다.비지트를 해서 111 000 이렇게 됬을 경우에 111 의 합을 구하는 것을 구현해보도록 하겠습니다.인덱스 처리와 그런것들을 명확히 할 것. */#include #include using namespace std; #define SIZE 21int map[SIZE][SIZE];int visit[SIZE];int n;int team_one;int team_two;int minVal=INT8_MAX; void problemIn() {cin >> n;for (int i = 0; i > map[i][j];}}} void dfs(int pos, int .. 2018. 2. 8.
백준 치즈2 /*모눈종이 얇은 ㄴ치즈. 엔은 세로 격자의 수 , 엠은 가로 격자의 치즈는 냉동 보관실내온도에 공기 접 4변 중에 적어도 2변 이상이 실내온도의 공기와 접촉한 것은정확히 한시간만에 녹습니다. 따라서 아래모양 치즈라면 시로 치즈 격자는 한시간 후에 사라짐.오께이 그럼 삭제할때 조건이 맵은 1이고 주변 동서남북을 돌렸을때 0,1,2,3 중에2개 이상이 0이면 삭제되도록 erase 하는 부분만 다시 해주면 됩니다. 오께이 그럼 다시 작성해보도록 하겟습니다. 체크가 1이면 이제 그 x,y 맵에서 x,y 주변에 동서남북 돌렸을 때 0이 2개 이상이면 지우면 됩니다.*/ #include #include #define SIZE 10using namespace std; int map[SIZE][SIZE];int ch.. 2018. 2. 8.
백준 치즈 /*치즈,원래치즈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.