Notice
														
												
											
												
												
													Recent Posts
													
											
												
												
													Recent Comments
													
											
												
												
													Link
													
											
									| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
													Tags
													
											
												
												- Algorithm
 - Selection Sorting
 - list 컬렉션
 - 윤성우 열혈자료구조
 - 이스케이프 문자
 - 윤성우의 열혈 자료구조
 - datastructure
 - s
 - Graph
 - Serialization
 - Stack
 - insertion sort
 - 이것이 자바다
 - C programming
 - buffer
 - 메모리구조
 - C 언어 코딩 도장
 - stream
 - 혼자 공부하는 C언어
 - R
 - coding test
 - 알기쉬운 알고리즘
 - JSON
 
													Archives
													
											
												
												- Today
 
- Total
 
Engineering Note
Naver제출 소스코드 저장용 본문
			Computer Science/Data Structure & Algorithm
			
		Naver제출 소스코드 저장용
Software Engineer Kim 2021. 4. 13. 15:58it 취업을위한알고리즘문제풀이
문제

코드1
//50. 영지(territory) 선택 : (small)
#include <stdio.h>
int main() {
    //freopen("input.txt", "rt", stdin);
    int map[51][51];
    int H, W, HH, HW, count = 0, maxCount = 0;
    //입력
    scanf("%d %d", &H, &W);
    for (int i = 0; i < H; ++i) {
        for (int j = 0; j < W; ++j) {
            scanf("%d", &map[i][j]);
        }
    }
    scanf("%d %d", &HH, &HW);
    //알고리즘
    //i,j는 누적해서 더해 갈 시작위치 값을 의미
    for (int i = 0; i <= H - HH; ++i) {
        for (int j = 0; j <= W - HW; ++j) {
            count = 0;
            //세로는 몇회, 가로는 몇 회까지만 더 할지
            for (int k = 0; k < HH; ++k) {
                for (int l = 0; l < HW; ++l) {
                    count += map[i + k][j + l];
                }
            }
            //for (int k = i; k <i + HH; ++k) {
             //     for (int l = j; l <j + HW; ++l) {
             //         area += map[k][l];
             //     }
             // }
            if (maxCount < count) {
                maxCount = count;
            }
        }
    }
    printf("%d", maxCount);
    return 0;
}
코드2
//51. 영지(territory) 선택 : (large)
 #include <stdio.h>
 #include <stdlib.h>
 int main() {
     freopen("input.txt", "rt", stdin);
     int** map;
     int H, W, HH, HW, firstCount = 0, curCount = 0, count = 0, maxCount = 0;
     //입력
     scanf("%d %d", &H, &W);
     //2차원 동적 배열 할당
     map = (int**)malloc(sizeof(int*) * H);
     for (int i = 0; i < H; ++i) {
         //map[i] = (int*)malloc(sizeof(int) * W);
         map[i] = (int*)calloc(W,sizeof(int));//동적할당 된 메모리공간을 0으로 초기화 하면서 동적할당
     }
     for (int i = 0; i < H; ++i) {
         for (int j = 0; j < W; ++j) {
             scanf("%d", &map[i][j]);
         }
     }
     scanf("%d %d", &HH, &HW);
 //    //i,j는 구간의 좌측 대각선 꼭지점
     for (int i = 0; i <= H - HH; ++i) {
         int j = 0;
         curCount = 0;
         //행 바뀔때마다 다시 기준 넓이 구하기
         for (int k = i; k < i + HH; ++k) {
             for (int l = j; l < j + HW; ++l) {
                 curCount += map[k][l];
             }
         }
         //firstArea를 두는 이유는 다음 2중for문에서 매번 첫번째 구간의 넓이는 사라지기 때문 미리 저장하고 최대값과 비교해서 최대값을 빼야한다.
         firstCount = curCount;
         for (int j = 0; j < W - HW; ++j) {
             //새롭게 더해질 곳은 기준으로 부터 현수가 갖게될 가로길이 만큼 옆으로 간곳
             //빠져야 할 곳은 가장 좌측(기준점에서 주어진 세로높이까지의 열)모두
             //"행의 기준점+HW"인 더하고 기준값 빼고 기준 값 다음 열에서 같은 행위 반복
             //printf("(%d,%d),cur:%d\n", i, j, curArea);
             for (int k = 0; k < HH; ++k) {
                 //    printf("%d\n", map[i + k][j + HW]);
                 curCount = curCount + (map[i + k][j + HW] - map[i + k][j]);
             }
             // 최대값 구하기
             if (curCount > maxCount)
                 maxCount = curCount;
             if (firstCount > maxCount)
                 maxCount = firstCount;
         }
     }
     printf("%d", maxCount);
     for (int i = 0; i < H; ++i) {
         free(map[i]);
     }
     free(map);
     return 0;
 }
'Computer Science > Data Structure & Algorithm' 카테고리의 다른 글
| 최단경로 알고리즘 (0) | 2021.04.15 | 
|---|---|
| Graph (0) | 2021.04.13 | 
| 영지(territory) 선택 : (large) (0) | 2021.04.08 | 
| 선택 정렬의 재귀적 구현 (0) | 2021.04.07 | 
| List (0) | 2021.02.24 | 
			  Comments