인프런 커뮤니티 질문&답변

starkshn님의 프로필 이미지
starkshn

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

4-J

4-J질문

작성

·

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점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

 

starkshn님의 프로필 이미지
starkshn
질문자

http://boj.kr/b2090b42a929479abf09f8e12ea55aae 이거는 어디가 틀린것이죠...? 문제도 어려워서 분석정도만 하다보니까 어디가 틀린것인지 감을 잡기가 어려운데 틀렸습니다 뜰 때 효과적으로 확인하는 방법이 있을까요?

starkshn님의 프로필 이미지
starkshn

작성한 질문수

질문하기