ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 종이조각
    백준알고리즘 2019. 8. 11. 22:05
    #include <iostream>
    #include <cstdio>
    using namespace std;
    int a[4][4];
    int main() {
    	int n, m;
    	scanf("%d %d", &n, &m);
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < m; j++) {
    			scanf("%1d", &a[i][j]);
    		}
    	}
    	int ans = 0;
    	// 0: -, 1 : |
    	for (int s = 0; s < (1 << (n * m)); s++) {
    		int sum = 0;
    		for (int i = 0; i < n; i++) {
    			int cur = 0;
    			for (int j = 0; j < m; j++) {
    				int k = i * m + j;
    				if ((s & (1 << k)) == 0) {
    					cur = cur * 10 + a[i][j];
    				}
    				else {
    					sum += cur;
    					cur = 0;
    				}
    			}
    			sum += cur;
    		}
    		for (int j = 0; j < m; j++) {
    			int cur = 0;
    			for (int i = 0; i < n; i++) {
    				int k = i * m + j;
    				if ((s & (1 << k)) != 0) {
    					cur = cur * 10 + a[i][j];
    				}
    				else {
    					sum += cur;
    					cur = 0;
    				}
    			}
    			sum += cur;
    		}
    		ans = ans > sum ? ans : sum;
    	}
    	cout << ans << '\n';
    	return 0;
    }

    못풀겠더라 그래서 그냥 답안지봤다.

    보아하니, 0과 1로 세로, 가로방향을 나누고 그에따라 답안을 구해나가는방식인듯

    처음에는 그냥 4 x 4일때, 4개가 최대값일거라 생각했는데

    0 0 0 5

    0 00 0

    0 0 0 0

    5 0 0 0

    같은경우도 있을거라는 생각이든다.

    '백준알고리즘' 카테고리의 다른 글

    배열 돌리기 4  (0) 2019.08.13
    연구소 3  (0) 2019.08.11
    스도쿠 재풀이  (0) 2019.08.10
    스도쿠  (0) 2019.08.09
    스타트와 링크  (0) 2019.08.08

    댓글

Designed by Tistory.