# Problem

59개의 포스트

with를 이용해 코호트를 만들자

문제 url Trips and Users 금지 되지 않은 사용자들의 취소율을 묻는 문제였다. 사용자가 고객, 드라이버로 나뉘어 있었기 때문에 각 타입에서 금지되지 않은 사용자 코호트를 만들었다. 두 개의 임시 테이블과 로그 테이블을 inner join 해서 풀어냈다. 임시 테이블을 만드는 방법은 쿼리의 복잡도를 낮춰주고 재사용 할 수 있어서 좋아하는 방법이다. 사용자 데이터 분석 할 때 코호트 분석을 할 때가 많은데 이 문제처럼 풀어내는 편이 나에겐 직관적으로 다가왔다. 실행 시간 96.27% 백분율을 기록하며 성능 면에서도 괜찮음을 확인 했다.

7일 전
·
0개의 댓글
·
post-thumbnail

Unveiling the Magic of Astrology: A Beginner's Guide

Do you ever wonder about the stars twinkling in the night sky? Have you heard about astrology but find it a bit puzzling? Well, let's take a simple journey into the world of astrology right from the comfort of London. Get ready to explore the cosmic wonders and understand what this age-old practice is all about. What is Astrology, Anyway? Astrology is like a cosmic map that helps us make sense of ourselves and the world around us. It's all about how the positions of planets, stars, and even th

2023년 8월 7일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 17

1. 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 >### 문제 설명 > myString의 부분 문자열 중 pat로 끝나는 가장 긴 부분 문자열을 찾아 반환 입출력 예 |myString|pat|result| |---|---|---| |"AbCdEFG"|"dE"|"AbCdE"| |"AAAAaaaa"|"a"|"AAAAaaaa"| 코드 >### 풀이 설명 >- 가장 길땐 일반적으로 검색방법인 왼쪽→오른쪽이 아니라 오른쪽→왼쪽으로 검색하는것이 훨씬 빠르다. >- lastIndexOf()메서드를 사용하여 myString의 오른쪽에서부터 pat을 검색한다. >- 0부터 찾은 인덱스에 pat의 길이만큼 더해준 인덱스 번호까지 slice()메서드를 사용하여 잘라 반환한다. 2. 문자열이 몇 번 등장하는지 세기 >### 문제 설명 > myString에서 pat이 등장하는 횟수를 반환 입출력 예 |m

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 16

1. 대문자로 바꾸기 >### 문제 설명 > 알파벳으로 이루어진 문자열 myString을 모두 대문자로 바꿔 리턴하세요. >### 풀이 설명 >문자를 대문자로 바꿔준는 toUpperCase()메서드를 사용하여 myString전체를 대문자로 바꿔준다. 2. 소문자로 바꾸기 >### 문제 설명 >알파벳으로 이루어진 문자열 myString을 모두 소문자로 바꿔 리턴하세요. >### 풀이 설명 >문자를 소문자로 바꿔준는 toLowerCase()메서드를 사용하여 myString전체를 소문자로 바꿔준다. 3. 배열에서 문자열 대소문자 변환하기 >### 문제 설명 >- 모든 원소가 문자열로 된 배열에서 홀수번째 인덱스의 문자열은 모두 대문자로 바꾼다. >- 짝수번째 인덱스의 문자열은 모두 소문자로 바꿔 반환하시오. >### 풀이 설명 >- strArr의 길이만큼 반복하는 반복문을 작성한다. >- 조건문을 사용하여 반복을 수행하

2023년 6월 12일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 15

1. 조건에 맞게 수열 반환하기 1 >### 문제 설명 >- 정수배열 arr각 원소의 값이 50보다 크거나 같은 짝수라면 2로 나눈다. >- 정수배열 arr각 원소의 값이 50보다 작은 홀수라면 2를 곱한다. >### 풀이 설명 >- map()을 사용하여 배열 내의 모든 요소를 순회하며 연산을 수행한다. >- if문을 사용하여 각 배열의 요소가 담긴 num을 50보다 큰지 작은지를 판단하여 다르게 연산하고 연산한 결과를 return한다. >- 결과적으로는 배열에 속한 모든 요소들이 연산을 마친 후 배열로 반환된다. 2. 조건에 맞게 수열 반환하기 2 >### 문제설명 >- arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나눈다. >- arr의 각 원소에 대해 값이 50보다 작은 홀수라면 2를 곱하고 다시 1을 더한다. >- 위 작업을 x번 반복한 결과인 배

2023년 6월 11일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 14

1. 홀수 vs 짝수 목표 : 홀수번째 합과 짝수번째합 중 더 큰것을 반환 >- 홀수와 짝수를 담을 변수를 각각 와 으로 선언하고 값은 으로 설정한다. >- 의 길이만큼 반복문을 수행한다. >- 배열의 첫 시작의 인덱스는 이지만, 홀수번째 이기 때문에, 를 로 나누었을 때 이면 홀수로 보고 에 를 더해준다. >- 짝수번째의 숫자는 단에서 처리를 하여 에 를 더해준다. >- 를 사용하여 더 큰 값을 반환해준다 2. 5명씩 목표 : 다섯명 씩 그룹을 나누었을 때 첫 번째에 있는 사람들을 반환 >- 를 사용하여 인덱스번호를 로 나누었을 때, 나누어 떨어지는 경우만 를 반환하기 때문에 결과적으로 의 조건은 의 배수인 인덱스만 남겨놓고, 배열로 반환한다. 3. 할 일 목록 목표 : boolean 배열에서 false인 인덱스를 이용하여 다른 배열에서 골라 출력 >- 를 사용하여 의 인덱스를 순회하면서 를 로 시킨 인덱스를 `todo_l

2023년 6월 8일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 13

1. n 번째 원소부터 목표 : n번째 원소부터 마지막 원소까지 담은 배열을 리턴 >- 를 를 사용하여 부터 마지막 원소까지 자른 결과를 리턴한다. 2. 순서 바꾸기 목표 : n번째 원소 전과 이후의 순서를 바꾸기 >- : 를 부터 마지막 까지 자른다. >- : 를 부터 까지 자른다. >- 이 두개를 확장연산자 를 사용하여 두개의 위치를 바꾼 후 반환한다. 3. 왼쪽 오른쪽 목표 : 먼저 나오는 문자에 따라 왼쪽과 오른쪽에 있는 배열의 원소들을 반환 * 문제 설명이 애매하게 돼 있으므로 잘 생각해 봐야한다. * > 에서 과 중 먼저 나오는 문자열이 >- 이라면 해당 문자열을 기준으로 왼쪽에 있는 문자열들을 순서대로 담은 리스트를 반환 >- 이라면 해당 문자열을 기준으로 오른쪽에 있는 문자열들을 순서대로 담은 리스트를 반환 >- 의 전체 배열을 순회하는 반복문을 작성한다 >- 반복문 안에서 처음 등장한 문자가 인지 인

2023년 6월 7일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 12

1. 리스트 자르기 목표 : 주어진 숫자에 따라 배열 다르게 자르기 >### 문제에서의 경우에 따른 조건 >- : 의 번 인덱스부터 번 인덱스까지 자른다. >- : 의 번 인덱스부터 인덱스까지 자른다. >- : 의 번 인덱스부터 번 인덱스까지 자른다. >- : 의 번 인덱스부터 번 인덱스까지 간격으로 자른다. >- 주어진 정수 에 따라서 다른 케이스로 배열을 잘라야 하기 때문에 문을 사용하였다. >- 코드가 복잡해 보이지만 로 주어진 정수배열을 로 선언하여 간단하게 사용해도 된다. >- 를 사용하여 조건에 맞게 잘라주면된다. 2. 첫 번째로 나오는 음수 목표 : 배열에서 첫 음수의 인덱스번호 구하기 >- 는 판별 함수를 만족하는 첫 식별자 반환하고, 만족하는 요소가 없으면 을 반환한다. >- 배열의 앞에서부터 순회하는 를 사용하여 보다 작은 요소를 판별함수로 넣어 처음 등장하는 음수의 인덱스를 반환한다. 3. 배열 만들기 3

2023년 6월 6일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 11

1. 문자 개수 세기 목표 : 대소문자 알파벳 갯수 세기 >- 알파벳의 갯수를 셀때 유니코드의 값을 가져오는 을 사용하면 쉽게 할 수 있다. >- 대소문자 알파벳을 합친 갯수는 52개이므로 52개의 정수배열을 모두 으로 채우고 로 선언한다. >- 을 순회하면서 각 문자들의 유니코드를 가져온다. >- 가져온 유니코드의 값이 이면 대문자 이므로, 의 인덱스를 가져온 유니코드 값 - 시작하는 유니코드 값(65) 으로 계산하여 해당하는 알파벳의 인덱스 자리에 을 해준다. >- 가져온 유니코드의 값이 이면 소문자 이므로, 의 인덱스를 가져온 유니코드 값 - 시작하는 유니코드 값(97) + 앞선 대문자들의 갯수(26) 으로 계산하여 해당하는 알파벳의 인덱스 자리에 을 해준다. <img src="https://velog.velcdn.com/images/dbsdnjs002/post/3b950dcc-0c4b-4297-ae3f-7

2023년 6월 5일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 10

1. 문자열의 앞의 n글자 목표 : 문자열의 앞에서부터 n글자 출력 >- 을 사용하여 파라미터에 로 전달하여 처음부터 번째 문자까지 잘라 반환한다. 2. 접두사인지 확인하기 목표 : 조건에 맞게 잘라진 문자열 검사 >- 검사할때 쓰일 를 Array형으로 선언하고, 의 길이만큼 반복하는 for문을 작성한다. >- 에 까지 자르는 을 사용하여 한다. >- 배열에서 요소가 있는지 검사하는 를 사용하여 판별후에 을 출력한다. 3. 문자열 뒤집기 목표 : 특정구간의 문자열 뒤집기 >- 에 을 자른 문자열을 저장한다. >- 에 을 뒤집은 결과를 저장한다. >- 에 의 문자열을 찾아 에 저장된 문자열로 를 사용해 바꾼다. 4. 세로 읽기 목표 : 정해진 크기의 표에 저장된 문자들을 특정 열만 지정해 출력 >- 을 2차원 배열의 크기인 변수와 반환할 문자열을 담을 를 선언한다. >- 시작할 인덱스를 하여 시작하고,

2023년 6월 2일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 9

1. 배열 만들기 5 목표 : 배열에 있는 특정구간의 문자열을 잘라내 검사후 반환 에 담긴 문자열들을 부터 까지 잘라내 와 비교해서 배열에 담아 반환한다. >- 반환할 배열인 를 선언하고, 의 길이만큼 반복한다. >- 에 의 값들이 순차적으로 들어가고, 해당 문자열을 으로 문자열을 잘라 숫자로 변환한 후 반환한다. 2. 부분 문자열 이어 붙여 문자열 만들기 목표 : 여러 문자열을 주어진 구간에 따라 자르고, 합쳐 반환 >- 문자열로 변환하여 출력할 배열의 이름을 로 선언한다 >- 부터 의 길이만큼 반복한다. >- 의 요소들을 로 선언하고, 의 문자열을 까지 자른다. >- 자른 문자열을 에 하고, 을 사용하여 이어붙인 후 반환한다. 3. 문자열의 뒤의 n글자 목표 : 문자열의 뒤에서부터 n까지의 글자를 반환 >- 을 사용하여 의 길이에서 을 뺀 만큼부터 끝까지 잘라 반환한다. 4. 접미사 배열 목표 :

2023년 6월 1일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 8

1. 간단한 논리연산 목표 : (x1 ∨ x2) ∧ (x3 ∨ x4) >- 논리연산자를 사용하여 로 연산해주고 3항 연산자를 사용했다. 2. 주사위 게임 3 ⭐ 목표 : 네개의 주사위를 굴려 각 조건에 맞게 반환 > ### 문제설명 > - 네 주사위에서 나온 숫자가 모두 로 같다면 1111 × p점을 얻습니다. > - 세 주사위에서 나온 숫자가 로 같고 나머지 다른 주사위에서 나온 숫자가 라면 점을 얻습니다. > - 주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 라고 한다면 점을 얻습니다. > - 어느 두 주사위에서 나온 숫자가 로 같고 나머지 두 주사위에서 나온 숫자가 각각 와 다른 이라면 점을 얻습니다. > - 네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습니다. > - 함수는 배열을 파라미터로 받아 배열을 순회하며 중복하는 숫자와, 해당 숫자가 몇 번 중복하는지를 형태로 반환한다.

2023년 5월 30일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 7

1. 수열과 구간 쿼리 4 목표 : 일정구간에서 규칙에 만족하는 연산 후 반환 의 원소는 각각 하나의 를 나타내며, 꼴이다. 각 마다 순서대로 인 모든 에 대해 가 의 배수이면 에 1을 더한다. > * 의 길이만큼 반복하고 각 원소들을 로 선언한다. > * 부터 까지 반복하고, 를 로 나누어떨어지면, 에 1을 더해준다. 2. 배열 만들기 2 목표 : 두 정수 사이에서 0과 5로만 이루어진 모든 정수를 오름차순으로 반환 정수 과 의 사이에 있는 정수들 중 과로만 이루어진 숫자를 배열에 담은 후 반환 > - 결과를 담을 배열을 선언하고, 부터 까지 반복한다. > - 는 숫자 를 문자단위로 자른다. > - 는 잘린 모든 문자들에 대해서 과 로만 이루어져 있는지 검사한다. 3. 카운트 업 목표 : start부터 end까지의 숫자를 차례로 담은 리스트를 return > - 반복문을 사용하여 배열에 를 담은 후 retu

2023년 5월 29일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 6

1. 마지막 두 원소 목표 : 배열에서 마지막 원소와 이전 원소를 비교하여 출력 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 추가후 반환 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가후 반환 >- if문을 사용하여 배열()의 마지막 원소와 이전 원소를 비교한다. >- 문제 조건에 따라 연산한 다음, 를 사용하여 의 마지막 원소로 추가후 반환한다. 2. 수 조작하기 1 목표 : 문자열의 문자종류에 따라 연산후 출력 "w" → n+1 "s" → n-1 "d" → n+10 "a" → n-10 >- 문자열의 문자들에 따라 인수로 받은 n의 수를 증가시키거나, 감소시켜야한다. >- 따라서 key : value의 형식으로 조건문을 대신하는 변수 을 생성한다 >- 인수로 받은 문자열만큼 반복하며 n에 대한 연산을 수행 후 반환한다. 3. 수 조작하기 2 목표 : 2

2023년 5월 22일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 5

1. 코드 처리하기 목표 : 문자열이 주어졌을때, mode와 index에 따라 새로운 문자열 생성 > 다음 문제의 핵심은 code라는 문자열이 들어왔을 때 default value를 0으로 가지는 mode에 따라 해당 문자열에서 문자를 추출해 새로운 문자열을 반환하는것이다. 기본 로직은 아래와 같다. >> mode가 0일때, [index]가 짝수일때만 code[index]를 새로운 문자열의 뒤에 추가한다. >>mode가 1일때, [index]가 홀수일때만 code[index]를 새로운 문자열의 뒤에 추가한다. >>code[index]가 1이면 mode를 바꾼다.(0→1, 1→0) >- 먼저 새로운 문자열 ret과 mode에 default값인 ""과 0을 각각 설정한다. >- code의 길이만큼 반복하는 반복문을 작성한다. >- mode의 상태를 확인하고, code[index]의 값이 1인지 확인한다. >- code[index]의 값이 1이

2023년 5월 21일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 4

1. n의 배수 목표 : 정수 num, n이 주어졌을 때, num이 n의 배수면 1출력 아니면 0출력 > - 3항 연산자를 사용하여 나머지가 0일때를 검사한다. 2. 공배수 정수 num, n, m가 주어질때 num이 n과 m의 공배수면 1 출력 >- 3항 연산자에 &&(AND)연산자를 넣어 조건을 검사한다. 3. 홀짝에 따라 다른 값 반환 목표 : 정수 n이 홀짝에 따라 홀수를 더하거나, 짝수의 제곱을 더하여 반환 >- sum 변수를 선언하고 n의 홀짝을 검사하여 반복문을 사용하여 sum에 짝수면 짝수의 제곱수를 더해주고, 홀수면 n까지의 홀수를 더해준다. 4. 조건 문자열 문자열로 들어온 연산자를 사용해 연산 >- 문자열로 받은 연산자 ineq, eq를 사용하기 위해서는 조건문으로 검사를 해야한다. >- 하지만 key : value 형식으로 변수를 작성하게되면 코드도 간결해지고, 알고리즘만 알

2023년 5월 20일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 3

1. 문자열 섞기 목표 : 길이가 같은 문자열을 교차로 출력 > - 빈 문자열을 만들고, 문자열의 길이만큼 반복한다. > - 빈 문자열에 str1와 str2의 문자열의 각 인덱스의 문자를 더해서 저장한다. 2. 문자 리스트를 문자열로 출력 목표 : 문자로 된 배열을 문자열로 출력 > - 배열을 문자로 이어 붙혀주는 join('')함수를 이용했다. 3. 문자열 곱하기 목표 : 문자열을 입력 정수만큼 여러번 출력 > - repeat(count)는 앞서오는 문자열을 count만큼 반복해 붙여 반환한다. 4. 더 크게 합치기 목표 : a⊕b와 b⊕a 중 더 큰 값을 출력 Ex) a⊕b는 12 ⊕ 6 = 126이다.(⊕는 배타적 논리합이다.) > - Math.max() 는 괄호안에 들어가는 가장 큰값을 반환한다. 즉 A>B일때, Math.max(A,B)이면 A를 반환한다. > - *${}

2023년 5월 19일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 2

1. 덧셈식 출력하기 목표 : 정수 a, b를 입력받아, a + b = c의 형태로 출력 readline Interface의 인스턴스를 rl로 설정한다. > - .on의 'line' 메서드를 사용하여, 입력받은 줄을 읽어온다. > - const [n1, n2]에 입력값을 한줄을 두개로 분리한다. > - console.log로 출력형태에 맞춰 출력한다. 2. 문자열 붙여서 출력하기 목표 : 두 개의 문자열 str1, str2를 입력받아 두 문자열을 붙여서 출력 (rl 인스턴스를 불러오는 과정은 생략한다.) > - 입력받은 공백으로 분리된 문자열을 split를 사용하여 두개로 분리하여 const [str1, str2]에 저장한다. > - console.log를 사용하여 두 문자열을 붙여서 출력한다. 3. 문자열 돌리기 목표 : 입력받은 str문자열을 90º돌려서 출력 (rl 인스턴스를 불러오는 과정은 생략)

2023년 5월 18일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Day - 1

1. 문자열 출력하기 목표 : 문자열을 입력받아 입력받은 문자열을 출력 readline 모듈을 불러와 createInterface메서드를 사용한다. > Interface 인스턴스(rl)을 사용하여 Interface에 내장된 함수를 .on으로 사용한다. > 나와있진 않지만, .close도 존재하는데, Interface 인스턴스와 입출력 스트림제어를 종료한다. >line 이벤트는 사용자가 Enter나 Return을 누를때 입력스트림이 발생한다. 2. a와 b출력하기 목표 : Int a,b를 입력받아 특정형식으로 출력 위와 똑같이 readline을 사용한다 하지만, 입력된 값을 분리해야하기 때문에 line이벤트를사용할때 콜백함수에서 문자열을 분리한다. 이후 console.log나 return을 사용하여 주어진 형식에 맞춰 문자열을 출력한다. 3. 문자열 반복해서 출력하기 목표 : 문자열과 정

2023년 5월 17일
·
0개의 댓글
·
post-thumbnail

브라우저에 쿠키(Cookie)가 전달되지 않는 문제 해결

함께 프로젝트를 진행했던 동료 개발자분이 CORS 설정을 모두 마쳤음에도 불구하고 쿠키가 전달되지 않는 문제를 겪고 계셨다. 정확히 말하면, application tab에서만 확인할 수 없었다. 결론부터 말하자면, 쿠키의 domain이 client domain의 상위 domain이 아니기 때문에 확인할 수 없었던 것이다. 🍪 쿠키(Cookie) 전달 조건 >RFC 6265 명세에서 허용하는 범위 안에서는 host가 동일하지 않아도 Cookie에 접근할 수 있다. 자세히 말하면, 특정 도메인으로 발급된 쿠키에 대해 하위 도메인에서는 접근이 가능하다는 명세이다. ❗️ 쿠키를 발급하지 못한 이유 >서버에서 Cookie를 발급할 때, 서버는 자기 자신 혹은 상위 도메인만을 Cookie의 Domain 값으로 지정할 수 있다. 따로 지정하지 않는 경우 현재 host(서버 도메인)를 기본값으로 사용한다. 서버 URL이 `http

2023년 1월 16일
·
0개의 댓글
·