Engineering Note

나머지 한점 본문

Problem Solving

나머지 한점

Software Engineer Kim 2021. 4. 23. 22:16

it 취업을위한알고리즘문제풀이

문제

programmers.co.kr/learn/courses/18/lessons/1878?language=c

[

알고리즘 문제 해설 - 나머지 한 점

프로그래머스의 모의테스트는 프로그래머스의 시스템에 익숙해지기 위한 테스트이며, 문제 자체는 2018 1ST KAKAO BLIND RECRUITMENT와 전혀 관계없습니다. 다만 모의테스트의 풀이에 대한 요청이 있어

programmers.co.kr

](https://programmers.co.kr/learn/courses/18/lessons/1878?language=c)

코드

travelerfootprint.tistory.com/54

 

백준 알고리즘 3009번: 네 번째 점 C언어

문제 출처: https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 문제 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. 입력 세 점의 좌

travelerfootprint.tistory.com

//https://programmers.co.kr/learn/courses/18/lessons/1878?language=c

#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*)calloc(2,sizeof(4));
    for(int i =0;i<3;++i){
        answer[0] ^= v[i][0]; 
        answer[1] ^= v[i][1]; 
    }

    return answer;
}
#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*)calloc(2,sizeof(4));

    if(v[0][0] == v[1][0]) 
        answer[0] = v[2][0]; 
    else if(v[0][0] == v[2][0]) 
        answer[0] = v[1][0]; 
    else answer[0] = v[0][0]; /*y값 서로 비교하여 겹치지 않은 y값을 y[3]에 대입*/ 

    if(v[1][0] == v[1][1]) 
        answer[1] = v[1][2]; 
    else if(v[1][0] == v[1][2]) 
        answer[1] = v[1][1];
     else answer[1] = v[1][0];

    return answer;
}

입력 v형태

X1

Y1

X2

Y2

X3

Y3

문제해결방법

  • XOR를 이용해서 문제를 해결했다.
    • ((x1 xor x1) xor x2) = x2 // 앞에 괄호에 x1 과 x1 같은 값끼리 xor를 하면 0이나오고 0과 x2의 xor를 하면 x2가 나오는 원리를 이용했다.
  • 출력할 answer 동적 배열을 calloc으로 0으로 초기화 한 상태로 동적 할당한다.
  • x좌표를 answer[0]에 저장하고 y좌표를 answer[1]에 저장 하여 return 한다.
  • v[0][0]에는 x1, v[0][1]에는 y1, v[1][0]에는 x1, v[1][1]에는 y2, v[2][0]에는 x3, v[2][1]에는 y3가 저장되어 입력 형태로 들어오므로 0과

'Problem Solving' 카테고리의 다른 글

네이버부스트캠프  (0) 2021.06.27
알고리즘 문제 풀이 사고 과정  (0) 2021.05.14
Comments