티스토리 뷰
브루트 포스
- 범위 밖을 벗어나는 칸을 아주 작은 음수값으로 설정해주면 for문을 한 번만 돌고 구할 수도 있다.
(풀다가 이렇게 할까 생각했는데 그냥 코딩했다...)
- 내가 실전에서 다급한 상황이라면 이렇게 할 것 같은 코드....
- 갓들의 숏코딩을 보면 감탄사가 나온다...
풀이
1. 만들 수 있는 모양들을 가지고 들어갈 수 있는 모든 칸에 대입해 점수를 구한다.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 | #include <iostream> #include <algorithm> #define FOR(i,a,b) for(int i = a; i < b; i++) #define endl '\n' #define sws ios::sync_with_stdio(false), cin.tie(NULL) using namespace std; int board[502][502]; int N, M, ans, a, b, c, d; int main() { sws; cin >> N >> M; FOR(i, 0, N) FOR(j, 0, M) cin >> board[i][j]; FOR(i, 0, N) { // 1번 FOR(j, 0, M - 3) { a = board[i][j]; b = board[i][j + 1]; c = board[i][j + 2]; d = board[i][j + 3]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 3) { // 2번 FOR(j, 0, M) { a = board[i][j]; b = board[i + 1][j]; c = board[i + 2][j]; d = board[i + 3][j]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 1) { // 3번 FOR(j, 0, M - 1) { a = board[i][j]; b = board[i + 1][j]; c = board[i][j + 1]; d = board[i + 1][j + 1]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 2) { // 4번 FOR(j, 0, M - 1) { a = board[i][j]; b = board[i + 1][j]; c = board[i + 2][j]; d = board[i + 2][j + 1]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 2) { // 5번 FOR(j, 0, M - 1) { a = board[i][j + 1]; b = board[i + 1][j + 1]; c = board[i + 2][j + 1]; d = board[i + 2][j]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 1) { // 6번 FOR(j, 0, M - 2) { a = board[i][j]; b = board[i][j + 1]; c = board[i][j + 2]; d = board[i + 1][j]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 1) { // 7번 FOR(j, 0, M - 2) { a = board[i][j]; b = board[i][j + 1]; c = board[i][j + 2]; d = board[i + 1][j + 2]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 1) { // 8번 FOR(j, 0, M - 2) { a = board[i + 1][j]; b = board[i + 1][j + 1]; c = board[i + 1][j + 2]; d = board[i][j + 2]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 1) { // 9번 FOR(j, 0, M - 2) { a = board[i + 1][j]; b = board[i + 1][j + 1]; c = board[i + 1][j + 2]; d = board[i][j]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 2) { // 10번 FOR(j, 0, M - 1) { a = board[i][j]; b = board[i][j + 1]; c = board[i + 1][j]; d = board[i + 2][j]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 2) { // 11번 FOR(j, 0, M - 1) { a = board[i][j]; b = board[i][j + 1]; c = board[i + 1][j + 1]; d = board[i + 2][j + 1]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 2) { // 12번 FOR(j, 0, M - 1) { a = board[i][j]; b = board[i + 1][j]; c = board[i + 1][j + 1]; d = board[i + 2][j + 1]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 1) { // 13번 FOR(j, 0, M - 2) { a = board[i + 1][j]; b = board[i + 1][j + 1]; c = board[i][j + 1]; d = board[i][j + 2]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 2) { // 14번 FOR(j, 0, M - 1) { a = board[i + 1][j]; b = board[i + 2][j]; c = board[i + 1][j + 1]; d = board[i][j + 1]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 1) { // 15번 FOR(j, 0, M - 2) { a = board[i][j]; b = board[i][j + 1]; c = board[i + 1][j + 1]; d = board[i + 1][j + 2]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 2) { // 16번 FOR(j, 0, M - 1) { a = board[i][j]; b = board[i + 1][j]; c = board[i + 2][j]; d = board[i + 1][j + 1]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 1) { // 17번 FOR(j, 0, M - 2) { a = board[i][j + 1]; b = board[i + 1][j]; c = board[i + 1][j + 1]; d = board[i + 1][j + 2]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 2) { // 18번 FOR(j, 0, M - 1) { a = board[i + 1][j]; b = board[i][j + 1]; c = board[i + 1][j + 1]; d = board[i + 2][j + 1]; ans = max(a + b + c + d, ans); } } FOR(i, 0, N - 1) { // 19번 FOR(j, 0, M - 2) { a = board[i][j]; b = board[i][j + 1]; c = board[i][j + 2]; d = board[i + 1][j + 1]; ans = max(a + b + c + d, ans); } } cout << ans; } | cs |
반응형
'백준 온라인 저지' 카테고리의 다른 글
| 190301 BOJ 16985번 Maaaaaaaaaze (0) | 2019.03.02 |
|---|---|
| 190224 BOJ 1406번 에디터 (0) | 2019.02.25 |
| 190217 BOJ 1208번 부분집합의 합 2 (0) | 2019.02.17 |
| 190215 BOJ 16940번 BFS 스페셜 저지 (0) | 2019.02.15 |
| 190214 BOJ 3020번 개똥벌레 (0) | 2019.02.14 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래밍 온라인 강의
- 코딩 면접
- 컴퓨터공학
- Fast Campus
- 개발자 취업
- c언어
- #패스트캠퍼스 #프로그래밍대학생서포터즈 #올인원패키지 #컴퓨터공학 #성공하는프로그래밍공부법
- 운영체제
- 자료구조
- 올인원 패키지
- 패스트캠퍼스
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함