-
[프로그래머스] 위클리 1주차 - 부족한 금액 계산하기(JS)알고리즘/프로그래머스 2021. 9. 30. 13:48
문제 이해하기 제공되는 데이터는 이용료, 현재 금액, 놀이기구 타고싶은 횟수를 가지고 원하는 만큼 놀이기구를 탈때 금액이 얼마가 모자르는지 출력해야한다. 놀이기구는 N번째 이용한다면, 원래 이용료의 N배를 받기로 한다. (처음 100 -> 200 -> 300) 데이터 추상화 인풋 데이터는 이용료, 현재 금액, 타고 싶은 횟수로 정수로 제공 된다. 아웃풋 즉 결과는 모자른 금액을 제공 하므로 정수를 리턴하면 된다. 알고리즘 일반적인 풀이 놀이기구를 N번 이용하고, 이용료가 P라면 식은 다음과 같다 - P * N + P * ( N - 1 ) + ... + P * ( N - N) - 이용료에서 N을 곱한 값부터, N이 0이 될때까지 더해준다 . - 이후 현재 금액을 뺀 나머지 값이 결과 값이다. functio..
-
Factory Method Pattern(팩토리 메서드)Design Pattern 2021. 9. 29. 17:58
목표 Factory Method의 등장 배경, 필요성 이해하기 Factory Method의 구조를 이해하기 Factory Method를 직접 구현해보기 Factory Method의 필요성 물류관리 앱을 만들고 있다고 상상해보자, 최초의 소스는 `TRUCK`안에 대부분 있을 것이다. 후에 물류관리 앱이 꽤 유명해져서, 해상 물류도 앱에 통합해야 되는 상황이 된다면, 모든 로직에 분기 처리가 들어가야 할 것이다. 아주 좋지 못한 코드가 될 것이다. 기존과 유사한 기능이 추가되는데 조금 다를 때, Factory pattern이 유용하게 사용된다. Factory Method? 객체 지향 디자인 패턴중 하나이다. Factory Method는 부모 클래스에서 객체를 생성하기 위한 인터페이스를 제공하지만, 서브 클래..
-
[프로그래머스] 위클리 6주차 - 복서 정렬 하기(JS)알고리즘/프로그래머스 2021. 9. 25. 00:49
문제 이해하기 복서들의 몸무게와 전적을 제안된 순서대로 정렬, 제안된 순서는 전체 승률이 높은복서 (1.)값이 같은 경우 몸무게가 무거운 복서를 이긴 횟수가 많은 복서 (1., 2.)값이 같은 경우 몸무게가 무거운 경우 (1., 2., 3.)값 모두 같은 경우 작은 번호가 앞쪽으로 데이터 추상화 제안 된 순서대로 정렬을 해야함 제안된 `승률`, `무거운 복서 승리 횟수`, `몸무게`, `번호`를 담을 배열 사용 알고리즘 승률은 head2head에서 승리 횟수인 W의 개수, 패배 회수인 L을 구한 후, 승리횟수와 패배횟수를 더한 전적으로 승리값을 나누어 구한다 let winRate = head2head.map((rates)=> { let winCnt = (rates.match(/W/g) || []).len..
-
객체 지향 프로그래밍카테고리 없음 2021. 9. 25. 00:35
목표 객체 지향 프로그래밍에 대해 이해한다 객치 지향 프로그래밍의 4가지 원칙을 알아보고 이해한다. 객체 지향 프로그래밍으로 코드를 작성한다. 객체 지향 프로그래밍이란? 객체를 컨셉으로 만든 프로그래밍 페러다임(스타일) 객체들끼리 의사소통하도록 디자인된 프로그램 관련있는 데이터와 함수를 Object 단위로 개발 객체 지향 프로그래밍의 장점 및 단점 장점 대형 프로젝트에 적합 분석과 설계의 전환이 쉽다 만들어 놓은 코드의 재활용이 가능 단점 설계에 많은 시간이 투자 객체가 많으면 프로그램 용양이 커진다 처리속도가 상대적으로 느리다 객체 지향의 4가지 원칙 캡슐화(Encapsulation) 객체와 관련된 내용들을 묶어줌 외부에서 내부의 상태를 직접 변경 할수 없음 외부에서 내부의 함수를 실행하여 내부상태를 ..
-
npm ? npx?back-end/nodejs 2021. 9. 10. 15:38
목표 npm, npx의 등장 배경 npx, npm에 대해 이해한다. npx, npm의 차이점을 이해한다 npm, npx의 등장배경 외부 라이브러리가 필요한 경우 소스코드를 다운로드해서 프로젝트에 일일히 넣어야하는 번거로움 외부 라이브러리 버전이 업데이트 된다면 다시 다운로드해서 프로젝트에 넣어야하는 번거로움 외부 라이브러리를 쉽게 관리하고자 등장하게 된게 npm, yarn이다. 점점 외부 라이브러리가 고도화 됨에 따라 외부 라이브러리를 실행해야하는 경우가 생김 외부 라이브러리를 실행 시켜주고자 등장하게 된게 npx 이다. npm 이란 ? Node Package Manager의 줄임말로 Node 설치시에 자동으로 설치된다 외부 라이브러리를 쉽게 관리할 수 있게 해주는 프로그램이다. 간단한 명령어 (npm ..
-
[JS] 자바스크립트 클래스 추가/삭제front-end/javascript 2021. 8. 31. 00:39
목표 JS 클래스 추가/삭제를 알아야하는 이유 JS 클래스 추가/삭제 하는 방법 JS 클래스 추가/삭제를 알아야하는 이유 실무에서는 UI 개발자가 UI를 class 형식으로 전달하여 사용하기 때문 특정 상황에 class를 추가, 삭제하여 UI를 변경 해야하기 때문 JS 클래스 추가 - 클래스 추가시에 사용 // 클래스 추가 div.classList.add('good', 'love'); JS 클래스 삭제 - 클래스 삭제시에 사용 // 클래스 삭제 div.classList.remove('love'); JS 클래스 덮어쓰기 - 기존에 있는 클래스를 다지우고 새로 등록시에 사용 // 클래스 덮어쓰기 div.className = 'good'; JS 특정 클래스 변경 - on/off로 클래스 변경시에 많이사용 //..
-
[javascript] key event 이해하기front-end/javascript 2020. 3. 18. 09:52
오늘은 간단한 key event에 대해 이해해보는 시간을 가져보고자 합니다. key event는 지금 제가 타이핑하고 있는 이 순간에도 일어나고 있습니다. ㅎㅎ 즉 타이핑을 할때마다 key event가 발생하게 됩니다. 총 keydown, keyup, keypress 이렇게 총 3개의 이벤트가 발생하게 되는데요. 각각의 이벤트가 언제 발생하는지 알아봅시다. 첫째로 keydwon key + down : keyboard가 down 되었을 때. 즉 키보드가 눌렀을 때 실행되는 이벤트입니다. 둘째로 keypress key + press : key가 press 되었을때, 즉 글자가 눌렀을 때 실행되는 이벤트입니다. keydown이벤트와 동일하게 키보드가 눌렀을때 실행되지만, 큰 차이점이 있습니다. keydown이..