languages/c++

[c++]배열, Leetcode26,27

och 2022. 4. 7. 14:03

배열의 용량은 컴파일 시간에 결정됩니다.

음.. c도 마찬가지인데 하여튼 그래서 배열 size를 변수로 설정하는 것이 허용이 안 되었었죠.

그래서 동적메모리 할당으로 이를 해결했습니다. 기억 나나요? 

 

int* abc{new int[20]} //동적배열선언

int n[5]{}; //모두 0으로 초기화 c++11부터 이렇게 하는 겁니다. 

 

in place로 짜라고 하는데 흠.. 

걍 우선 추가공간을 확보해서 만드는 것을 생각해본다음 in place로 바꿔볼게요. 

void removeDuplicates(int list[], int size){
	int* temp{new int[size]};
	temp[0]=list[0];
	int j=1;
	for(int i=1;i<size; i++){
		if(temp[j]!=list[i]){
			++j;
			temp[j]=list[i];
		}
	}
	for(int i=0; i<j;i++){
		list[i]=temp[i];
	}
	delete [] temp;
}

void removeDuplicates(int list[], int size){
	
	int j=1;
	for(int i=1;i<size; i++){
		if(list[j]!=list[i]){
			++j;
			list[j]=list[i];
		}
	}
}

 

이렇게 하면 되겠네요. 아래 코드가 in place로 바꾼 식이예요. 

 

Leetcode 27번도 매우 유사한데요... 음... 이것도 in place문제예요.

이렇게 하면 되겠는데요?

void removeDuplicates(int list[], int size, int val){
	
	int j=0;
	for(int i=0;i<size; i++){
		if(list[i]!=val){
	
			list[i]=list[j];
            ++j;
		}
	}
}

음 저는 이렇게 하면 될 것 같은데 이건 정답을 봐야 알겠네요 ㅋㅋ