전체 글
-
[JS/프로그래머스] 카펫Coding Test/JavaScript 2023. 7. 14. 22:41
완전탐색 문제에 속하는 카펫 문제를 풀어봤다. 완전탐색은 간단히 가능한 모든 경우의 수를 다 체크해서 정답을 찾는 방법이다. 즉, 무식하게 가능한 거 다 해보겠다는 방법을 의미한다. function solution(brown, yellow) { let answer; for(y=1; y= y) { const tmpTotalBrown = x*2 + y*2 + 4; if (brown === tmpTotalBrown) { answer = [x+2, y+2]; return answer; } } } } 시간 복잡도 O(n) 걸립니다.
-
디바운싱과 쓰로틀링JavaScript 2023. 7. 14. 16:55
💡 이번주 데브 코스 강의에서 디바운싱과 스로틀링에 대한 내용이 나와서 한번 다시 정리해 보려 합니다! "debouncing"이라는 영어 표현이 익숙하지 않아서 한번 찾아봤더니 적절한 한국어 표현이 없더라고요! 전등의 스위치를 누르는 상황을 가정해 봤을 때 신호가 한 번만 가서 바로 전등의 불이 켜진다고 생각하지만 실제로는 신호의 안정성이 확립되기까지 시간이 걸린다고 하네요. 이 시간 동안 스위치 내의 접점에서 여러 번의 접촉과 분리가 일어날 수 있는데, 이로 인해 노이즈가 발생하고 여러 번의 상태 변화가 일어날 수 있다고 해요. 우리가 원하는 건 스위치를 켜서 보내는 신호 한 번인데 중간에 불필요한 신호가 가면 안 되겠죠? 이를 해결하기 위해 도입된 방법이 "debouncing"이라고 해요. 앞에서..
-
[프로그래머스/JS] 피보나치 수Coding Test/JavaScript 2023. 7. 12. 23:34
이 문제는 문제를 이해하는데 시간이 걸렸다. 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수를 말하는데 0번째 피보나치 수가 0, 첫번째 피보나치 수가 1인건 정해져 있고 두번째 피보나치 수는 앞에 두개를 더한 1이 된다는 말이다. 예를 들어보면 0 1 1 2 3 5 8 13 과 같이 n-1 번째 수와 n-2번째 수가 더해져 n번째 수가 되는 법칙이 성립된다고 생각하면 된다. 그런데 문제에서 생뚱맞게 1234567 로 나누라고 해서 이게 뭐지 했는데 피보나치 수 44만 해도 2,971,215,073로 int의 값을 훨씬 넘은 수라 int 내에서 해결하기 위한 문제 의도라고 한다. function getFibonacci..
-
[JS/프로그래머스] 영어 끝말잇기Coding Test/JavaScript 2023. 7. 11. 22:29
오늘은 한번에 통과했다! for문 한번만 돌면 되게 풀이했다. function solution(n, words) { let answer; for (let i = 1; i < words.length; i++) { answer = [i % n + 1, Math.floor(i / n) + 1]; const item = words[i]; if (words.indexOf(item) !== i) { return answer; } const lastWord = words[i - 1].slice(-1); const firstWord = item[0]; if (lastWord !== firstWord) { return answer; } } return [0, 0]; }
-
[JS/프로그래머스]짝지어 생각하기Coding Test/JavaScript 2023. 7. 10. 21:36
function solution(s) { let arr = s.split(''); for(let i = 0; i < arr.length; i++) { if(arr[i] === arr[i+1]) { arr.splice(i,2) i = -1 } } return arr.length === 0 ? 1 : 0 } 오늘도 효율성 검사에서 막혔다... 흠.. 문자열이 길고 복잡해지면 for문을 너무 많이 돌게 되는 문제가 있는거 같은데.. stack을 써보면 for문을 한번만 돌아도 될 것 같다. function solution(s) { let stack = []; for(let i = 0; i < s.length; i++) { if(!stack.length || s[i] !== stack[stack.length-1..
-
(6월/MIL) 프로그래머스 데브코스 FE 한달 회고프로그래머스 데브코스: 빅 데이터 플랫폼 프론트엔드 엔지니어링 2023. 7. 10. 01:16
벌써 데브코스 시작한 지 한 달이 됐습니다! 강의 열심히 듣고, 3번의 과제를 진행하고, 중간중간 팀원들과 오프라인으로 만나고 하다 보니 시간이 이렇게 빨리 지났네요. 이렇게 한 달 했는데 정말 데브코스에 지원하길 잘했다는 생각이 들어요. 제가 여기 어떻게 붙었지 라는 생각도 들고 ㅎㅎ 그만큼 좋은 커리큘럼을 가지고 있고 모두 실력 있는 교육진이세요. 그리고 가장 좋은 건 좋은 동료들이에요. 지금껏 만났던 분들 모두 개발 실력이 뛰어나시고 성장하고 싶어 하시고 겸손하세요. 개발 외에도 인격적으로 배울 부분이 많았습니다. 그에 비해 저는 실력부터 부족해서 정말 사소한 것부터 시간을 많이 소모해야 하는 문제들까지 동료들한테 질문을 많이 했는데 흔쾌히 함께 고민해 주시고 제 어려움에 공감해 주셔서 정말... ..
-
[JS/프로그래머스] 다음 큰 숫자Coding Test/JavaScript 2023. 7. 9. 20:41
10진법의 수를 2진법으로 바꾸는데는 다양한 방법이 있다. 그 중 n진수를 -> m진수로 바꾸는 방법인 parseInt(num,n).toString(m) 를 사용하여 구현하였다. function solution(n) { let answer = n + 1; function countOnes (n) { let answer = 0 parseInt(n, 10).toString(2).split('').forEach((x) => { if (x === '1') { answer++; } }); return answer; } while(countOnes(n) !== countOnes(answer)) { answer++; } return answer; } 하지만 효율성 테스트를 통과하지 못했다. countOnes() 함수..
-
[JS/프로그래머스] 숫자의 표현Coding Test/JavaScript 2023. 7. 8. 16:02
슬라이딩 위도우 방법을 이용해서 처음에 아래와 같이 구현했는데 효율성 검사에서 막히네요. function solution(n) { let answer = 0; let sum = 1; let lt = 0; let rt = 1; while(lt !== n && rt !== n) { // lt가 n인 경우 마지막에 answer에 1 더해주자 if(sum === n) { answer++; lt += 1; sum -= lt; } else if (sum > n) { lt += 1; sum -= lt; } else { rt += 1; sum += rt; } } return answer + 1; } 찾아보니까 else로 조건들을 한번 감싸보라고 해서 수정하니까 되네요! function solution(n) { let ..