알고리즘 5

[알고리즘] 비트마스킹에 대해 알아보자

인턴을 하게 되면서 알고리즘 문제를 많이 접하게 되지만,, 나에게는 아직도 알고리즘은 머리 아픈 숙제와 가깝다.그래도 인턴으로 있으면서 잊어버렸던 전공지식이 되살아나는 중이다. 함께 일하는 분들에게 어찌나 감사한지.. 이번에는 집합 문제 풀 때 유용하게 사용할 수 있다는 비트 마스킹에 대해 알아보려고 한다. 그냥 재귀로 풀면 되는거 아냐?생각했는데, 비트마스킹을 이용하면 훨씬 간단하고 빠른 속도로 알고리즘을 풀 수 있다는 사실을 배우게 되었다. 대학생 때 분명 배웠던 것 같은데..왜 이렇게 익숙해지지 않는지.. 비트마스킹이란?비트 마스킹은 정수의 이진수 표현을 자료구조로 사용해서 알고리즘을 효율적으로 구현하는 기법이다. 비트 연산자는 수학적 계산을 넘어서 다양한 문제를 간결하고 빠르게 해결할 수 있도록 ..

알고리즘 2024.10.27

[프로그래머스] 완주하지 못한 선수

난이도는 1레벨이고 엄청 간단했지만 신기한 정규식 풀이가 있어서 남겨본다var solution=(_,$)=>_.find(_=>!$[_]--,$.map(_=>$[_]=($[_]|0)+1))var solution=(participant,completion)=>participant.find(name=>!completion[name]--,completion.map(name=>completion[name]=(completion[name]|0)+1)) 주자 배열을 {이름:완주자배열에 등장하는 횟수}로 맵핑하고, 그 맵에 참가자 이름 하나씩 넣어서 찾아볼때마다 횟수 떨어뜨려서 횟수 0나오는 놈 찾아뱉는 함수같네요  라는 고인물의 코멘트 어렵다 어려워... function solution(participant, com..

알고리즘 2024.05.26

[JavaScript] 시간 복잡도 줄이기

1. 검색할 때는 배열 대신 set 2. 반복문 대신 연산으로 할 수 있으면 되도록 연산으로 -> includes/while문 말고 자료구조(스택, 큐) 쓰는 방법도 생각해보기 3. 기본 제공 메소드 너무 믿지 말기 시간복잡도함수명 O(1) at() , entries() , every() , isArray() , keys() , pop() , push() , shift() , values() , with() O(n) concat() , copyWithin() , fill() , filter() , find() , findIndex() , findLast() , findLastIndex() , flat() , flatMap() , forEach() , from() , fromAsync() , group()..

알고리즘 2024.03.27

[JavaScript] 단순 서치 성능 개선하기

코딩테스트 공부 겸 문제 푸는데 내 풀이가 performance 면에서 66점이라고 나왔다..자스로 코테보는건 생소해서 어렵네..function solution(A) { if(A.filter((a)=> a>0).length == 0) return 1; // Implement your solution here let max = Math.max(...A); for(let i =0 ;i다르게 풀어봐도 똑같은 점수가 나와서 뭐가 문젤까 하고 chat gpt한테 물어봄 Set을 활용하여 중복 검사 회피하기: 배열에 대한 includes() 메서드는 순차 검색을 수행하기 때문에 배열의 크기가 크면 성능이 저하될 수 있습니다. 대신에 JavaScript Set 객체를 사용하여 중복을 피하고 h..

알고리즘 2024.03.27

[JavaScript] map, reduce 함수

1. for문 대신 map var answer = [...my_string].map(v => v.repeat(n)).join(""); const newMyArr = myArr.map((currentElement, index, array) => { console.log(요소: ${currentElement}); console.log(index: ${index}); return currentElement * 2 }); reduce 메소드 .reduce((acc, curr) => acc + Number(curr), 0); reduce 메서드는 배열을 객체로 바꾸는것도 가능하게 한다. ['철수', '영희', '현영', '한솔'].reduce((a, c, i) => {a[i] = c; return a}, {}) ..

알고리즘 2024.03.09