본문 바로가기
  • 밥 하루하루
공돌이/C언어

[프로그래머스/C언어] 나머지 한 점

by BobBob 2023. 3. 24.
728x90
반응형

-. i, j에서 중복되지 않는 값을 구하기 위해 for문으로 일일이 체크해서 구하려 했는데 그건 비효율적이고 해서 다른 분이 푼 걸 참고함. 생각도 못했음. 아래와 같이 해서 중복이 되지 않는 값을 구해서 해보려 했었음. 

#include <stdio.h>
#include <string.h>

int main()
{
	int arr[3] = { 4,4,10 };
	int check[11] = {};
	int dx;

	printf("size = %d\n", sizeof(arr) / sizeof(int));

	for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
		dx = arr[i];
		check[dx]++;
	}

	printf("중복 아닌 숫자: ");
	for (int i = 0; i < sizeof(check) / sizeof(int); i++) {
		if (check[i] == 1) {			
			printf("%d\n", i);
		}
	}
}

 

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// v_row_len은 2차원 배열 v의 행(세로) 길이입니다.
// v_col_len은 2차원 배열 v의 열(가로) 길이입니다.
// v[i][j]는 v의 i번째 행의 j번째 열에 저장된 값을 의미합니다.
int* solution(int **v, size_t v_row_len, size_t v_col_len) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    int* answer = (int*)malloc(sizeof(int)*2); // int 2개
    
    answer[0] = 0;
    answer[1] = 0;
    
    for(int i = 0; i < 3; i++){
        answer[0] ^= v[i][0]; // answer[0] = answer[0] ^ v[i][0]
        answer[1] ^= v[i][1]; // answer[1] = answer[1] ^ v[i][1]
    }
    
    return answer;
}

-. XOR을 이용하면 됨. XOR는 같으면 0, 다르면 1임. 디지털논리 내용임.

-. XOR을 이용해서 품. 

728x90
반응형

댓글