[알고리즘] 직사각형의 좌표 구하기

문제

난이도는 높지 않다. 효율적인 알고리즘을 짜는 것을 요구하는 문제같다. 실제 테스트문제 였는지 모의 테스트 문제였는지는 잘 모르겠다.

내가 처음 짰던 코드는 다음과 같다

#include <iostream>
#include <vector>
using namespace std;
 
vector<int> solution(vector<vector<int> > v) {
    vector<int> ans;
    for(int i=0; i<2;i++){
        if(v[0][i]==v[1][i])
            ans.push_back(v[2][i]);
    else{
        if(v[0][i]==v[2][i])
            ans.push_back(v[1][i]);
        else
            ans.push_back(v[0][i]);
        }
    }
    return ans;
}
cs

이 정도는 누구나 짤 수 있는 평범한 코드다. 다른 개발자분 블로그에서 더욱 '효율적'인 코드를 찾았다. 비트 연산자를 사용하는 방법이다. 역시 수업시간에 배운 것들 중 쓸모 없는게 없는 것 같다.

vector<int> solution(vector<vector<int> > v) {
    vector<int> ans;
    ans.push_back(v[0][0]^v[1][0]^v[2][0]);
    ans.push_back(v[0][1]^v[1][1]^v[2][1]);
    return ans;
}
cs



No comments:

Powered by Blogger.