분류 전체보기
-
[프로그래머스] 약수의 개수와 덧셈Algorithm | Data structure/문제풀이 2023. 3. 17. 22:40
Q. 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. ( 1 ≤ left ≤ right ≤ 1000 ) 알게 된 것 : 약수의 갯수가 홀수인 수는 제곱근이 정수인 수이다. thinking 약수의 정의 : 임의의 정수 x가 임의의 정수 y로 나누어 떨어질때, y를 x의 약수라고 부른다. 여기서 만약 약수 y가 정의가 된다면 y * 몫 = x이기 때문에, x의 약수 y가 정의 되면 사실상, x의 약수는 y와 몫 2개라는 사실을 알 수 있다. 즉, 약수 하나를 발견하면 그것은 약수를 2개씩 발견하는 것과 같다는 말이다. 따라서,..
-
배열 fill 메소드, 문자열 repeat 메소드Language/JavaScript 2023. 3. 15. 03:05
프로그래머스 문제를 풀다가 새로 알게 된 메소드가 있어 정리한다. [프로그래머스] 핸드폰 번호 가리기 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. - 제한 조건 : phone_number는 길이 4 이상, 20이하인 문자열입니다. function solution(phoneNumber) { const preNumber = phoneNumber.slice(-4) const postStar = [...phoneNumber.slice(0,phoneNumber.length - 4)].m..
-
반복문(while, do-while)Language/JavaScript 2023. 3. 15. 02:00
for문과 while문의 차이 for문, while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 좋지만, for문은 반복 횟수를 알고 있을 때 주로 사용하고 while문은 조건에 따라 반복할 때 주로 사용한다. - for문 : 반복횟수가 정해진 경우, 배열과 함께 주로 많이 사용 - while문 : 무한 루프나 특정 조건에 만족할 때까지 반복해야하는 경우, 주로 파일을 읽고 쓰기에 많이 사용 - do-while문 : 조건에 따라 반복을 계속할지 결정할 때 사용하는 while과 동일하지만 중괄호 블럭을 무조건 한 번 실행 하고 조건을 검사하여 반복을 결정. - continue문 : for문, while문, do-while문에서 사용하며 for문에서 continue를 만나게 되면 ..
-
XSS와 CSRF 공격Server/기타 2023. 3. 13. 18:26
XSS(Cross-Site Scripting) 공격 크로스사이트 스크립트 공격(Cross-site scripting Attacks)은 웹사이트에 악성 코드를 삽입하는 공격 방법이다. 공격자는 대상 웹 응용 프로그램의 결함을 이용하여 악성코드(일반적으로 클라이언트 측 JavaScript 사용)를 사용자에게 보낸다. XSS 공격은 일반적으로 애플리케이션의 호스트 자체를 대상으로 하지 않고 애플리케이션의 사용자를 목표로 삼는다. XSS는 공격자가 웹 응용프로그램을 속여 사용자의 브라우저에서 실행할 수 있는 형식의 데이터를 보낼 때 발생한다. 일반적인 HTML과 공격자가 제공한 XSS코드의 조합 뿐만 아니라 악성코드 다운로드, 플러그인 또는 미디어 콘텐츠를 이용하기도 한다. 사용자가 양식에 입력한 데이터 또는 ..
-
원티드 프리온보딩 : SW 아키텍쳐 - 2. Layered ArchitectureServer/기타 2023. 3. 11. 16:02
Layered Architecture 장단점 찾아보기 장점 구현이 단순하다. 생산성이 좋다. 빠르게 학습할 수 있다. 단점 데이터베이스 중심의 설계가 이루어진다. - repository 부터 설계가 이루어진다. repository가 우선적으로 되는 이유는 데이터베이스 설계(erd 등)부터 우선적으로 되기 때문. - 도메인 모델에 대한 상태변경이 아닌 행동 중심으로 모델링이 된다. 즉 엔터티를 변경시키는 행동으로 모델링이 된다. - 그래서 OOP가 무너진다. OOP를 배우는 이유가 객체와 객체 사이를 행동이 아닌 상태로 관리하고 메시지를 주고 받기 위한 건데, 엔티티에 getter, setter만 있으면 결국엔 엔티티가 DAO 가 되어 버린다. 단순 setter보단 의미있는 이름을 가진 메소드를 사용해야 ..
-
원티드 프리온보딩 : SW 아키텍쳐 - 1. 도메인과 아키텍처Server/기타 2023. 3. 10. 19:52
도메인이란? 정의 : 도메인은 일반적인 요구사항, 전문 용어, 그리고 컴퓨터 프로그래밍 분야에서 문제를 풀기 위해 설계된 어떤 소프트웨어 프로그램에 대한 기능성을 정의하는 연구의 한 영역이다. 출처 : https://ko.wikipedia.org/wiki/도메인_(소프트웨어_공학) 간단히 말하면 개발하고자 하는 소프트웨어의 요구사항, 문제 영역을 도메인이라고 생각할 수 있다. 쇼핑몰을 예로 들면, 카탈로그, 리뷰, 주문, 결제, 배송, 정산, 회원 등이 도메인이다. 레이어드 아키텍처 아키텍처 종류 모놀리식 아키텍쳐 Layered Architecture Clean Architecture Hexagonal Architecture : 도메인 중심 아키텍처의 일종으로 클린 아키텍처를 일반화한 구조 중 하나. 분..
-
효율적인 API 문서 관리를 위한 Swagger 도입Server/Nest.js 2023. 3. 10. 16:26
Swagger What’s problem : API 명세서 관리 프로젝트를 하면서 불편한 점을 하나씩 해결해보고자 한다. 이번에는 API 명세서를 작성하며 느낀 불편함을 개선해보기로 했다. 보통 프로젝트를 시작할 때 API를 개발하기 전에 명세서를 먼저 작성하여 프론트엔드 팀원에게 공유하고, API 개발이 끝나면 postman을 활용해 API 명세를 공유하고 있었다. Gitbook으로 직접 손으로 작성하는 것 보다는 postman이 편했지만, postman으로 API 명세서를 작성하다 보니 API가 어떻게 동작하는지에 대한 자세한 설명을 기입할 수가 없고 크고 작은 수정이 발생하면 직접 해당 API를 postman 통신하여 예외처리한 부분들까지 적용해주는 과정이 꽤 번거로웠다. How solve the ..
-
정렬 메소드 sort와 localeCompareLanguage/JavaScript 2023. 3. 6. 15:30
프로그래머스 문제를 풀다가 학습한 내용이다. Q. 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 배열안에 있는 문자열을 특정 조건으로 정렬하는 문제였다. 배열 내장 메소드 sort를 사용하면 된다. arr.sort([compareFunction]) sort 메소드는 인자로 정렬 순서를 정의하는 함수를 콜백함수로 받는데, 콜백함수의 반환 값이 양수이면 오름차순, 음수이면 내림차순, 0이면 정렬하지 않는다. 그런데 중요한 것은 비교함수의 리턴 값이 조건부가..
-
github 원격 브랜치를 로컬로 가져오기Git&Github 2023. 1. 30. 16:50
원격(origin) 저장소를 clone 받은 후 git branch로 확인해보면 원격저장소의 branch는 받아지지 않고 main 브랜치만 있는 것을 확인할 수 있다. 이 때, 원격 저장소에 존재하는 branch를 확인하고 해당 브랜치를 로컬로 가져오려면 아래와 같은 git 명령어를 사용하면 된다. git branch -r // 원격 저장소 branch 리스트 확인 git branch -a // 로컬과 원격 저장소 branch 리스트 확인 git checkout -t origin/develop // 원격의 develop 브랜치 가져오기 git checkout -t origin/feature/user // 원격의 feature/user 브랜치 가져오기 git checkout -t 옵션은 체크아웃 시 로컬에..
-
[Nest.js 공식문서 읽기] MiddlewareServer/Nest.js 2023. 1. 27. 15:04
Middleware 미들웨어란 라우트핸들러 전에 호출되는 함수이다. 미들웨어 함수는 req, res 객체에 접근 가능하며 애플리케이션의 요청-응답 주기에서 next() 미들웨어 함수에 접근할 수 있다. Nest 미들웨어는 express의 미들웨어와 같다. 📌 Official express documentation describes the capabilities of middleware. Middleware functions can perform the following tasks: execute any code. make changes to the request and the response objects. end the request-response cycle. call the next middlewa..