728x90

set 2

Set과 Array 비교 테스트

발단프로젝트 중 핸드폰에 저장된 주소록을 서버로 전송하여 차단된 유저를 확인하고 동작을 구분해야 했다.차단된 번호는 카운트, 차단되지 않은 번호는 db에 저장하도록 해야 하는데, 사람마다 차단하게 될 번호의 갯수는 제각각이다.  연락처가 100개도 안될 수도 있지만, 10000개가 넘는다던지 하는 경우에 어디까지 저장되었고, 어디부터 다시 저장해야 하는가 하는 그런 동작이 필요했다.  구현 중에 문득 조회하는 시간복잡도에 대한 고민이 생겼다. 배열을 그대로 돌리면 중복값에 대한 불필요한 검사가 반복되기 때문이다. 그래서 이전에 공부했던 Set에 대해 다시 공부하면서 처리한 과정을 써보려 한다.  해결과정 const startSet = performance.now(); // Set 자료구조를 사용..

개발/프로젝트 2024.03.08

[자료구조] Set 객체 뽀개기 feat. 해시테이블

서두 코딩테스트 문제를 푸는데 중복된 문자열을 제외해야 쉽게 풀 수 있는 문제가 있었다. 문제에서는 그룹단어를 판별하는 문제였는데, 그룹 단어는 문자열이 반복되거나 1개만 나오면 괜찮은데 다른 문자열이 나열된 이후 기존 문자열이 있으면 그룹단어가 아니다. ex1) acsssc 여기서 c가 처음에 등장하고, 뒤에 다시 등장하기 때문에 그룹단어가 아니다. ex2) acsssd 다시 반복되는 문자열이 없기 때문에 그룹단어다. 배열로 반복문 돌리면서 인덱스에 1을 더해가며 확인하고, 별짓을 다해서 어찌 풀긴 풀었는데 아무리 봐도 이게 효율적이라고 느껴지지는 않았다. 다른 풀이는 어떻게 되는지 구글링을 하는데, 꽤 문제를 오래걸려서 풀면서 여러 방법을 고민하다보니 다들 생각이 비슷했다. slice이나 split을..

728x90