Skip to content

[1208] 부분수열의 합2 <50%에서 통과못하고 있음...> #26

Answered by wjdgns7712
yess98 asked this question in Q&A
Discussion options

You must be logged in to vote
long cnt = 0;
if(sum == S) {
  long lc =  0 ; 
  int lvalue = al.get(index1); 
  while(index1 < al.size() && al.get(index1) == lvalue) {
	  lc ++; 
	  index1 ++; 
  }
  long rc = 0 ; 
  int rvalue = al2.get(index2); 
  while(index2 < al2.size() && al2.get(index2) == rvalue) {
	  rc ++; 
	  index2 ++; 
  }
  cnt  += lc * rc; 

위와 같이 cnt, lc, rc의 타입을 long으로 바꿔줘야합니다.

주어진 배열의 길이가 40일때, 반으로 쪼갠 왼쪽 배열에서 생길 수 있는 조합의 수는 다음과 같이 생길 수 있습니다.

여기서 이 조합의 수가 모두 0인 경우가 생길 수 있습니다.

마찬가지로 오른쪽에서도 모두 0인 경우가 존재할 수 있는데,

이러한 경우에 S=0 이라면, lc = 2^20, rc = 2^20 이 되고,

cnt += lc * rc 이므로 cnt = 2^40이 되어

int범위를 초과해버립니다

Replies: 1 comment 2 replies

Comment options

You must be logged in to vote
2 replies
@YeonsangYoon
Comment options

@yess98
Comment options

yess98 Aug 23, 2021
Maintainer Author

Answer selected by wjdgns7712
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
3 participants