끄적 끄적..

기존에 있는 배열의 값입력을 통해 받은 배열의 값

비교하고 중복되는 값을 저장하고 출력하는 문제입니다.

꽤 많은 시간이 들었던거같습니다... 이해가 안가면 끝까지 잡고있어야해서..

int main(){

                int arr_1[5]; // 기존에 주어질 값
                int arr_2[5]; // 입력받을값
                int arr_3[5]; // 비교하여 저장할곳

}

배열을 총 3개 각각과 같이 선언해주었습니다.

int main(){

         int arr_1[5]={1,2,3,4,5}; // 비교당하는 곳 초기화 (1)
         int arr_2[5]; 
         int arr_3[5]={0}; // 저장공간 초기화 (2)
 
			
            for(int i=0;i<5;i++){
            	scanf("%d",&arr_2);  //arr_2 배열에 값 입력받기(3) 
            }
}

제가 하고싶은건

다섯칸의 정수형 배열 arr_2[5]에 입력을 받고 

기존의 값 

int arr_1[5]={1,2,3,4,5}; 와 비교하는 것입니다.

따라서 (1)번과 같이 초기화(3)번과 같이 for문으로 arr_2번에 입력받아 저장했습니다

int main(){

         int arr_1[5]={1,2,3,4,5};
         int arr_2[5]; 
         int arr_3[5]={0}; 
			
            for(int i=0;i<5;i++){
            	scanf("%d",&arr_2);   
            }
            
            for(int i=0;i<5;i++){   // 비교하여 arr_3에 저장!
            	for(int j=0;j<5;j++){
                	if(arr_1[i]==arr_2[j]){
                    	arr_3[i]=arr_1[i];
                    }
                }
            }
            
}

여기가 핵심인데 그림으로 좀 그려보겠습니다

선언되어 있는 배열을 그림으로 나타냈습니다.

arr_2 값에는 임의로 5,6,7,8,9 라는 값을 넣어주었다고 임의로 가정했습니다.

죄송해요 더러워서

 for(int i=0;i<5;i++){
            
           for(int j=0;j<5;j++){
                
               if(arr_1[i]==arr_2[j])  {
                    
                        arr_3[i]=arr_1[i];
                   }

반복 비교부분만 때서 볼게요

첫번째 반복문의 i가 0 일때 두번째 반복문을 j=0부터 5까지 반복하겠죠?

이말을 다르게 하면 첫번째 배열의 i값의 해당하는 값두번째 배열의 모든 값

반복하여 비교해볼수있다는 얘기입니다 

이런 느낌으로요,,

그리고

 for(int i=0;i<5;i++){
            
           for(int j=0;j<5;j++){
                
               if(arr_1[i]==arr_2[j])  { // <- 여기로 일치하는지확인하고
                    
                        arr_3[i]=arr_1[i]; // <-여기로 arr_3번 배열에 중복값 저장시켜요
                   }

그러면 전부 해당 안되다가

arr_1[4]arr_2[0] 번 값이 5로 일치하죠?

그러면 일치할때 arr_3[ i ]값에 대입하라니까 다음과 같습니다

저장해요
그러면 arr_3[4]는 5에요.

int main(){

         int arr_1[5]={1,2,3,4,5};
         int arr_2[5]; 
         int arr_3[5]={0}; 
			
            for(int i=0;i<5;i++){
            	scanf("%d",&arr_2[i]); // 여기오타였어요 죄송합니다  ㅎㅎ 
            }
            
            for(int i=0;i<5;i++){   // 비교하여 arr_3에 저장!
            	for(int j=0;j<5;j++){
                	if(arr_1[i]==arr_2[j]){
                    	arr_3[i]=arr_1[i]; //  (1)
                    }
                }
            }
            
            for(int i=0;i<5;i++){ 
                 if(arr_3[i]!=0){ // 위에 (1)번에서 저장안된 애들은 0이겠죠?
                 	printf("%d\n",arr_3[i]); // 0 이 아니라면 출력한다. 그르면 중복된값을 출력하겠죠?
                 }
            }            
}

5,6,7,8,9 대입
1,2,5,6,9

붙잡고 씨름을 좀 했더니 어지럽네요,,

+ Recent posts