목록알고리즘 (3)
on your mark

셔플 알고리즘(shuffle) Math.random() 사용해서 구현하기 function shuffle(array){ array.sort(() => Math.random() - 0.5); } let arr = [1,2,3]; shuffle(arr); Math.random() - 0.5는 양수나 음수 둘 중 하나이기 때문에 정렬 함수는 요소를 무작위로 재 정렬해준다. 그런데 sort는 이런 용도로 만들어진 메서드가 아니기 때문에 위와 같이 구현하게 된다면 1,2,3으로 만들 수 있는 순열이 같은 빈도로 나타나지 않는다. function shuffle(array) { array.sort(() => Math.random() - 0.5); } let count = { '123' : 0, '..
StrSymmetryPoint String의 가운데 지점을 포인트로 잡고 해당 지점 앞 뒤로 비교함 function solution(S) { let answer = parseInt(S.length / 2); if([...S.slice(answer, S.length)].reverse().join('') === S.slice(0, answer-1)){ return answer; } else return -1; }
FirstUnique 1차 시도 A 배열의 요소의 마지막 순서와 첫번째 순서가 같으면 요소가 1개라는 의미이므로 고유값인 것을 의미 Detected time complexity: O(N\2)** function solution(A) { let answer = A.filter( (ele) => { return A.indexOf(ele) === A.lastIndexOf(ele) }) return answer.length > 0 ? answer[0] : -1; } timeout이 일어나서 수정 2차 시도 obj객체를 만들어 해결 function solution(A){ let obj = {}; for(let i=0; i ele[0] > 0); //obj객체에서 0인것 제외 if(answer.length === ..