작성
·
432
0
http://boj.kr/b293b7352cda4189a70ce187abf9f942
0퍼에서 바로 틀렸습니다 가 계속 뜨는데 어디가 잘못된건지 모르겠습니다. 한줄한줄 보기도하고 TC다 넣어봤는데 이상이 없었습니다
답변 1
0
안녕하세요 stark님 ㅎㅎ 잘 짜셨는데요
일부분이 좀 잘못 된 거 같아요. 주석 달았는데 확인부탁드려요~
#include <bits/stdc++.h>
//불필요한 헤더파일
#include <cstdio>
using namespace std;
// 백준 14391
#define endl "\n"
// ret을 0으로 초기화 할 핋요. x 전역변수이기 때문.
int n, m, a[4][4], ret = 0;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n >> m;
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++j)
{
scanf("%1d", &a[i][j]);
}
}
)
// 이거 1 << (n * m ) 해주어야 해요.
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;
// cur값은 7 -> 71 -> 711 이런식으로 감.
if ((s & (1 << k)) == 0)
{
cur = (cur * 10) + a[i][j];
}
// 1이 나오는 경우
else
{
sum += cur;
cur = 0;
}
}
sum += cur;
}
// '1'을 확인하는 Logic (세로)
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;
}
ret = max(ret, sum);
}
cout << ret << endl;
return 0;
}
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
http://boj.kr/b2090b42a929479abf09f8e12ea55aae 이거는 어디가 틀린것이죠...? 문제도 어려워서 분석정도만 하다보니까 어디가 틀린것인지 감을 잡기가 어려운데 틀렸습니다 뜰 때 효과적으로 확인하는 방법이 있을까요?