728x90
방법1 - 중복이 아닌 수를 구하여 반환
function solution(v) {
let answer = [],
position_x = [...new Set([v[0][0], v[1][0], v[2][0]])],
position_y = [...new Set([v[0][1], v[1][1], v[2][1]])];
// x position setting
let answer_x = v.filter(vv=>vv[0]==position_x[0])
if(answer_x.length===1) {
answer.push(position_x[0]);
} else {
answer.push(position_x[1]);
}
// y position setting
let answer_y = v.filter(vv=>vv[1]==position_y[0])
if(answer_y.length===1) {
answer.push(position_y[0]);
} else {
answer.push(position_y[1]);
}
return answer;
}
풀이과정은 이렇습니다. Set으로 중복을 제거한 x좌표와 y좌표를 수집한 뒤 x좌표가 하나만 있는 경우는 부족한 좌표값으로 인지하여 결과로 반환할 answer에 담습니다. y좌표도 마찬가지로 구하였고 테스트 결과 통과되었음을 확인하였습니다.
하지만 시간이 너무 오래걸리는 것 같네요 filter에... Set에.... 성능을 향상할 방법이 없을까 확인해보니 비트연산자를 활용하는 방법이 있었습니다.
방법2 - XOR 비트연산자로 중복이 아닌 수를 구하여 반환
function solution(v) {
let answer = [];
answer.push(v[0][0]^v[1][0]^v[2][0]);
answer.push(v[0][1]^v[1][1]^v[2][1]);
return answer;
}
오... 속도 차이가 2배 이상 나는 것을 확인할 수 있었습니다. 앞으로 비트연산자와 친숙해져야겠습니다 ㅎㅎㅎ
728x90
'Study Note > Algorithm' 카테고리의 다른 글
프로그래머스 #스택/큐 - 프린터 lv2 (0) | 2021.09.10 |
---|---|
프로그래머스 #정렬 - 가장 큰 수 lv2 (0) | 2021.01.23 |
프로그래머스 #완전탐색 - 모의고사 lv1 (0) | 2021.01.22 |
프로그래머스 #월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기 lv1 (0) | 2021.01.22 |
프로그래머스 #정렬 - K번째수 lv1 (0) | 2021.01.20 |
댓글