1.다중포인터로 중복값 제거(set과 유사한 기능)하는 법은 아래와 같다.
function counting(arr){
if(arr[i] !== arr[j]){
i++;
arr[i] = arr[j]
}
}
조건은 오름차순 또는 내림차순으로 섞이지 않은 순서일 경우에 가능하다.
작동 원리는 0번째와 다른 값이 나올 때 까지 j가 증가하고 만약 새로운 값이 나오면 그 값을 i+1의 위치에 할당한다. i는 0이었으므로 [0번째, 1번째,...기존배열들]의 형태로 나타나며 그 다음 새로운 값이 있다면 2번째 인덱스에 할당되게 되며 그 인덱스는 i의 형태로 기록이 되기 때문에 slice(0,i+1)을 통해 중복값이 없는 값을 가질 수 있고 중복이 없는 값의 갯수(i+1)도 알 수 있으며 arr.length-i를 통해 중복해서 버려진 값의 갯수 또한 알 수 있다.
2.면적 중복값을 구하는 방법은 각 면적을 담당하는 포인트를 지정( (x1,y1,x2,y2) = (1,1,3,3)인 경우 1씩 증가한 (2,2), (2,3), (3,2), (3,3) 총 4칸이 각각 1의 넓이를 차지한다고 가정)한 후 중복되는 값을 new Set으로 바꾼 후 구조분해할당으로 배열화 한 다음 .length를 사용하면 중복값이 없는 좌표의 갯수가 길이로 바뀌기 때문에 파악할 수 있다.
3차 for문이지만 합집합 면적의 계산 자체적인 무게감 때문인지 범위가 작게 설정되어 있어 제한의 10%정도밖에 리소스 소비를 하지 않았다.
3.sort를 사용할 경우 조건에 따라 여러가지 정렬이 가능하다.
sort((a,b) => a.length - b.length)로 글자수 정렬이 가능하며
배열 내부가 객체들로 이루어져 있다면 그 객체들 또한 정렬이 가능하다.
sort((a, b) => b.key - a.key);
알고리즘을 학습하다가 몇문제를 풀어보니 실버4로 승급했다.
솔직히 뭔가 알고리즘다운 알고리즘을 배운건 거의 없지만 알고리즘을 푸는 자세를 배우고 나니 조금 더 부담없이 접근할 수 있는 것 같다.

'회고' 카테고리의 다른 글
| [React] 상태 관리 (0) | 2022.07.05 |
|---|---|
| [React] Custom Component-3 (0) | 2022.07.04 |
| 학습(알고리즘) (0) | 2022.07.02 |
| [React] Custom Component-2 (0) | 2022.07.01 |
| [React] Custom Component (0) | 2022.06.30 |
