분류 전체보기

코딩테스트

[JS] [3차] 압축

난이도: Lv. 2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 1. 사전에 존재하지 않는 단어가 나올때까지 문자를 계속 추가한다. 2. 사전에 존재하지 않는 단어가 나오면 마지막 문자를 제외한 문자열의 사전 색인 번호를 정답 배열에 추가하고, 사전에도 추가한다. 3-1. 주어진 문자열의 마지막 문자를 포함한 문자열이 사전에 존재하는 경우의 예외 처리 (j === msg.length - 1 부분) 3-2. 주어진 문자열의 마..

코딩테스트

[JS] k진수에서 소수 개수 구하기

난이도: Lv. 2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 1. n을 k진수로 변환한다. 2. 시작 인덱스를 0으로 초기화하고, 1.의 문자열을 순회하며 0을 만나면 시작 인덱스부터 0 전까지의 문자열을 복사해서 배열에 넣는다. 0을 만났을 때 다음 시작 인덱스는 0 다음 인덱스다. for문이 끝났을 때 시작 인덱스부터 마지막 문자까지의 문자열은 배열에 넣지 않은 상태이므로 배열에 넣어준다. 3. 배열의 각 원소에 대해..

코딩테스트

[JS] 타겟 넘버

난이도: Lv. 2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 누적 합을 나타내는 변수는 sum, 위 그림에서 -1과 1을 나타내는 변수는 flag, 트리의 레벨을 나타내는 변수는 idx이다. 1. sum에 flag와 주어진 정수 배열에서 idx에 해당하는 원소를 곱하여 더하고, idx를 하나 증가시킨다. 2. idx가 주어진 배열의 길이와 같아지면 주어진 배열의 원소들을 연산한 것이기 때문에 재귀함수를 종료한다. 종료하기..

코딩테스트

[JS] 전화번호 목록

난이도: Lv. 2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 1. 전화번호부를 String 자료형을 기준으로 오름차순 정렬한다. 2. 앞에 위치한 전화번호가 바로 뒤에 위치한 전화번호의 접두사인지 확인한다. 접두사일 경우 false를 반환한다. 코드 해시 사용 function solution(phone_book) { phone_book.sort(); const hashMap = new Map(); for (let i = ..

코딩테스트

[JS] [1차] 뉴스 클러스터링

난이도: Lv. 2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 1. 입력으로 들어온 두 문자열을 두 글자씩 끊어서 Object에 담는다. Object의 키-값 쌍은 해당 문자열이 몇 개 있는가를 나타낸다. 두 글자씩 끊었을 때 영문자가 아닌 글자가 포함되어 있는 문자열인 경우 Object에 담지 않고, 모두 영문자여서 Obejct에 담을 때는 소문자로 변경하여 담는다. 다중집합 원소를 비교할 때 대소문자의 차이를 구분하지 ..

코딩테스트

[JS] 프로세스

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 1. [프로세스 우선순위, 프로세스 인덱스] 배열을 주어진 순서대로 큐에 삽입한다. 2-1. 꺼낸 프로세스의 우선순위가 가장 높지 않은 경우 꺼낸 프로세스를 큐에 다시 삽입한다. 2-2. 꺼낸 프로세스의 우선순위가 가장 높고, location(몇 번째로 실행되는지 알고 싶은 프로세스의 위치)에 해당하는 프로세스라면 answer을 하나 증가시키고 반복문을 종료하고 ..

코딩테스트

[JS] 기능개발

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 1. 각 기능의 진도가 100%가 되기까지 며칠이 걸리는지를 배열에 저장한다. 2. 1.의 배열에서 시작 원소를 인덱스를 저장해 놓고, 배열을 순회하며 시작 원소보다 큰 원소가 나오면 해당 원소의 인덱스와 시작 원소의 인덱스 차를 구하여 정답 배열에 넣고, 시작 원소의 인덱스와 시작 원소 값을 업데이트한다. 코드 function solution(progresses..

코딩테스트

[JS] 튜플

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 1. 각 집합을 배열로 split 한다. 2. 1.의 결과인 집합 배열들을 배열의 길이를 기준으로 오름차순 정렬한다. 3. 각 배열의 원소들을 정답 Set에 입력한다. 코드 function solution(s) { const answer = new Set(); // 각 집합을 배열로 분리 s = s.substring(1, s.length - 1); const sp..

웹 프로그래밍

[YelpCamp 프로젝트] 보안

SQL Injection 이름은 SQL Injection이지만 No SQL도 해당되는 이야기다. SQL Injection이란 사용자 input으로 데이터베이스 쿼리를 만들때 input에 SQL 구문을 작성하여 작성된 SQL 구문이 실제로 동작하게 되는 것을 말한다. express와 mongo 환경에서 이것을 막아보자. npm i express-mongo-sanitize 위 패키지를 설치하고 아래 코드 처럼 미들웨어를 추가하면 된다. const mongoSanitize = require('express-mongo-sanitize'); app.use(mongoSanitize()); Cross Site Scripting (XSS) XSS는 클라이언트 측 스크립트가 웹 페이지에 삽입되는 것을 말한다. 아래의 예..

코딩테스트

[JS] [1차] 캐시

난이도: Lv.2 문제: https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 1. 참고로 문제에서 도시 이름은 대소문자를 구분하지 않는다고 했기 때문에 모든 도시 이름을 소문자 또는 대문자로 바꿔준 후 진행한다. 2. 캐시에 들어가 있는 도시 이름을 나타내는 cacheMemory 배열과 도시 이름이 언제 캐시에 들어갔는지 나타내는 cacheStatus 배열을 선언한다. 3. miss에는 두 종류가 있다. 캐시가 꽉 차지 않아서 발생하는 경..

미안하다 강림이 좀 늦었다
'분류 전체보기' 카테고리의 글 목록 (17 Page)