본문 바로가기
반응형

전체 글179

[JS] 프로그래머스 약수의 개수와 덧셈 문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. function solution(left, right) { var answer = 0; let arr = []; let arr1 =[]; for(let i =left;i 2021. 10. 21.
유클리드 호제법 (최대공약수, +최소공배수) 유클리드 호제법이란 두 정수의 대해서 최대공약수를 찾아내는 알고리즘입니다. 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a> b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수입니다. const greateat_common = (a,b) => { if(b === 0) return a return greateat_common(b, a%b); } console.log(greateat_common(10,20)); 재귀 함수로 풀어보았습니다. 두 정수 a b를 할당받습니다. 최대공약수를 구할.. 2021. 10. 3.
[JS] async와 await javascript로 코드를 짜다보면 비동기는 빠질 수 없는 개념입니다. 만약 비동기로 작성하지않는다면?.... 위에 사진처럼 콜백 지옥에 빠지게 됩니다.. 하하..... 코드의 가독성도 저하되고, 문제점을 바로 찾을 수가 없습니다. 이를 해결하기 위해 async와 await를 사용하는 방법과 개념을 정리해보려고 합니다. 1.async async는 function 키워드 앞에 위치하게 됩니다. async function test() { return 1; } function 앞에 async를 붙이면 해당 함수는 항상 프라미스를 반환합니다. 프라미스가 아닌 값을 반환하더라도 이행 상태의 프라미스(resolved promise)로 값을 감싸 이행된 프라미스가 반환되도록 합니다. async function te.. 2021. 9. 11.
node.js & express.js 단단하게 설계하기 잘못된 부분이 있으면 피드백해주시면 감사합니다. 책도 찾아보고 혼자 공부해보면서 다른 사람들이 어떻게 설계하였는지 참고해보면서 나만의 아키텍처를 구성해보았습니다. node.js는 타 프레임워크와 달리 파일의 구성들을 잡아주지 않습니다. 빈 박스에 본인이 필요한 기능들을 추가하는 방식입니다. 처음에 하나의 파일로 구성해보면서 많은 불편함을 느껴 구조 설계에 관심을 가지게 되었습니다. MVC 패턴을 참고하여 제작하였습니다. 폴더 구조 ├─ API │ ├── controllers │ │ ├── (해당기능이름).controller.js │ │ └── (해당기능이름).controller.js │ ├── models │ │ └── (해당기능이름).model.js │ ├── test │ │ └── (해당기능이름).s.. 2021. 9. 9.
[node.js & express.js] 깔끔하게 Routing을 해보자! 키보드 추천 플랫폼을 혼자 구현해보면서 어떻게 하면 깔끔하게 router를 구성할 수 있을까 고민을 많이 해보았습니다. // app.js var indexRouter = require('./routes/index'); var keyboardRouter = require('./routes/keyboard'); var app = express(); ... //생략 app.use('/', indexRouter); app.use('/keyboard', keyboardRouter); module.exports = app; 처음 서버를 구축할 때 app.js에서 모든 라우터를 처리하는 방법은 비효율적입니다. 물론 한 파일로 구성해도 프로그램이 돌아가긴 하지만, 나중에 프로젝트를 확장할 때 유지보수 측면에서는 꽝이라.. 2021. 9. 8.
에라토스테네스의 체 프로그래머스 소수찾기 문제를 풀면서 예전에 사용해보았던 에라토스테네스의 체라는 알고리즘을 다시 한 번 사용해보았습니다. 에라토스테네스의 체를 그림으로 한번 살펴볼까요? 이런 식으로 2의 배수부터 지워나가 3의 배수, 4의 배수... 증가시켜 제거하는 방법입니다. 코드 리뷰를 통해서 확인해보겠습니다. function solution(n) { let arr = Array(n+1).fill(true).fill(false,0,2); //n의 숫자의 크기만큼 array를 할당해주고 true로 채워줍니다. 0,1은 소수가 아니기 때문에 제외해줍니다. for(let i =2; i*i 2021. 9. 2.
[JS] ES6 화살표 함수와 기본 함수의 차이점을 알아보자 ES6문법 중에 화살표 함수 기능이 추가되었습니다. 숫자 두 개를 받아서 더하는 함수를 만들어 설명해보겠습니다. //ES5 let add = function(a,b){ return a+b; } function add(a,b) { return a+b; } //ES6 let add = (a,b) =>{ return a+b; } 기본 함수에 비해 화살표 함수가 조금 더 간결하게 보입니다. 그럼 "기본 함수를 쓰는 것보다 화살표 함수를 쓰는 게 간결하고 보기가 편하니까 모두 화살표 함수를 쓰자"라고 하실 수 있겠지만, 큰 차이점이 있습니다. 바로 this입니다. 화살표 함수는 함수를 선언할 때 this에 바인딩할 객체가 정적으로 결정됩니다. 함수 내부에서 this를 생성하지 않고 this를 사용하면 외부 함수 .. 2021. 8. 30.
[Git] rebase와 merge의 차이점 merge와 rebase의 차이점이 무엇이고 어떠한 상황일 때 사용하는지 정리해보려고 합니다. https://applepick.tistory.com/99?category=800640 Git-flow를 사용해보자! 회사에서 서비스 기능을 구현하기 위해 git develop 브랜치에 올리려고 하였다. 전 게시글에서 보았듯이 develop 브랜치는 다음 버전을 개발하는 브랜치라서 잘못 올렸다가는 master에 merge가 되어 배 applepick.tistory.com 제 블로그에 git-flow에 대해서 정리한 것이 있으니 한번 참고해보셨으면 좋을 듯합니다. merge merge는 흔히 브랜치를 병합하는 것으로 많이 사용합니다. 예를 들어보겠습니다. develop 브랜치에서 feature 브랜치를 하나 만들.. 2021. 8. 28.
[프로그래머스] 숫자 문자열과 영단어 (2021 카카오 채용연계형 인턴십) 알고리즘 문제를 천천히 하나하나 풀어보고 있습니다. 문자열을 다루는 문제 중에 괜찮아 보여서 풀어보았습니다. 문제 설명 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같.. 2021. 8. 28.
반응형