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

이선용님의 프로필 이미지
이선용

작성한 질문수

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

3주차 개념 #1. 완전탐색과 백트래킹

재귀하여 mod 11하는 문제에 질문있습니다.

작성

·

294

0

KakaoTalk_20230808_112237991.png이런식으로 코드를 구성하였습니다

해당 부분에서 이전수업에서 들었던 모듈러연산은 최종결과에서 하는것과 중간에 모듈러연산이 사칙연산에 의해서 같이 계산되는게 결과가 같다고 기억하여 이런식으로 구성하였는데 맞는걸까요? 정답은 같은것같은데 테스트케이스가 따로있진 않은 예제라 혹시나하여 질문드립니다

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 선용님 ㅎㅎ

#include<bits/stdc++.h>
using namespace std; 
int n, temp, ret;
vector<int> v;   
const int mod = 11;

void go(int idx, int sum){
	if(idx == n){
		ret = max(ret, sum % mod); 
		return;
	}
	go(idx + 1, sum + v[idx]);
	go(idx + 1, sum);
}
int main() {
	cin >> n;
	for(int i = 0; i < n; i++){
		cin >> temp;
		v.push_back(temp);
	}
	go(0, 0);
	cout << ret << "\n"; 
	return 0; 
}

이부분 말씀하시는건가요?


해당 부분에서 이전수업에서 들었던 모듈러연산은 최종결과에서 하는것과 중간에 모듈러연산이 사칙연산에 의해서 같이 계산되는게 결과가 같다고 기억하여 이런식으로 구성하였는데 맞는걸까요? 정답은 같은것같은데 테스트케이스가 따로있진 않은 예제라 혹시나하여 질문드립니다

>> 정답은 같지만 지금 선용님 코드를 보면 함수에서 매번 max를 연산하고 있습니다. 사실 그럴 필요는 없고 기저사례에서만 max 연산을 하시는게 더 효율적인 코드입니다. (결과적으로 누적해서 쌓아온 값을 기반으로 max연산해야 하므로.)

해당 부분 말고는 잘 짜셨습니다. ㅎㅎ

다만 코드 공유하실 때 스샷 보다는 링크로 부탁드립니다. 0주차 - 질문하는 방법 참고해주세요. ㅎㅎ

 

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

이선용님의 프로필 이미지
이선용

작성한 질문수

질문하기