본문 바로가기

전체 글94

프로그래머스 JavaScript - 최대공약수, 최소공배수 구하기 문제 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 두 수는 1이상 1000000이하의 자연수입니다. n m return 3 12 [3, 12] 2 5 [1, 10] 문제풀이 function solution(n, m) { var answer = []; let max = [] //n이 더 클때 if(n>m){ for(i=1;in){ for(i=1;im){ for(i=1;in){ for(i=1;i 2024. 1. 31.
자바스크립트 코테 핵심로직(2) 탐색 알고리즘 중 DFS를 공부해보자 탐색 알고리즘이란? 그래프의 모든 정점들을 특정한 순서에 따라 방문하는 알고리즘 그럼 그래프는 뭔데?! 그래프란, 자료구조 중 하나이다. 한 나라에는 도시들이 여러개 존재하고 이들은 도로들이 연결지어주고있다. 이때 이 도시들과 그에 연결된 도로를 합쳐서 자료구조로 만든것이 그래프이다. 정점은 도시들이 되고, 간선은 도로들이 된다. (근데 왜 1에서는 2, 3만 갈 수 있는걸까..?) 제대로된 정의는 다음과 같다. 정점과 간선으로 구성된 한정된 자료구조를 의미하며, 각각의 지점을 정점이라고 한다. 그리고 정점과 정점을 연결시켜 주는 것을 간선이라 부른다. 이런 그래프 자료구조를 탐색하는 것이 DFS(깊이우선탐색), BFS(너비우선탐색)이다. 왜 DFS, BFS를 알아야 하는가? 그냥 탐색하면 안되나? 왜 .. 2024. 1. 30.
자바스크립트 코딩테스트 핵심로직(1) 코딩테스트 문제를 하루에 1~3개씩 풀어보고있는데 아직도 자바스크립트 사용한 로직에 익숙하지 않아 구글링을 하는 내 모습을 보며.. 😒 차라리 공부를 확실하게 하고 넘어가자 싶어 글을 쓰게 되었다! 1. forEach forEach를 통해 배열을 하나하나 돌 수 있다. 다음과 같이 사용하면 콘솔창에 배열의 요소와 인덱스까지 같이 출력되는것을 알 수있다. 2. split split은 문자열을 사용자가 설정한 기준에 따라 나눠서 배열을 만들어 준다. 이 배열을 다시 문자열로 만들고 싶다면 join을 사용하면 된다. const a = ret.join("") //HelloWorld const a = ret.join(" ") //Hello World const a = ret.join(" hi ") //Heloo .. 2024. 1. 30.
TIL #18) Transaction Today I Learned 트랜잭션이란 작업의 완전성을 보장해주기 위해 사용되는 개념이다. 특정한 작업을 전부 처리하거나, 전부 실패하게 만들어 데이터의 일관성을 보장해준다. 작업의 단위를 하나의 쿼리에 종속하는것이 아닌, 여러개의 작업(쿼리)을 묶어 하나의 작업단위로 그룹화하여 처리하는 작업을 뜻한다. 대부분의 데이터베이스가 트랜잭션의 특징을 이용하고 있으며, MySQL뿐 아니라 AWS dynamoDB, MongoDB, CockroachDB 등 다양한 데이터베이스에서도 트랜잭션의 개념을 확인 할 수있다. 1) A 고객의 계좌에서 1000원을 차감한다. 2) B 고객의 계좌에 1000원을 추가한다. 다음과 같은 기능은 반드시 트랜잭션이 필요하다. 만약 1번과정 후 2번 과정에서 오류가 발생했다면, A .. 2024. 1. 30.
TIL #17) ORM, Prisma 파먹기 Today I Learned 무작정 강의를 따라듣다보니 기본적인 개념이 궁금해져 공부해보려 한다. ORM(Object-relational maping) : DB데이터를 객체로 매핑해주는것. 모델링 된 객체와 관계를 바탕으로 SQL을 자동으로 생성해주는 도구. 기존 ORM들이 겪는 많은 문제들을 겪지 않을 수 있게 한다고 프리즈마 공식 문서에서는 말한다. Prisma의 구성: Prisma Schema, Prisma introspect, Prisma migration, Prisma client, Prisma studio 1. Prisma Schema 프리즈마 v1에서는 graphQL을 통해 모델을 정의했다면, 프리즈마 v2에 와서는 PSL(Prisma Schema Language)를 통해 모델을 정의한다. .. 2024. 1. 27.
TIL #16) CPU 구성요소 Today I Learned 스탠다드 특강에서 CPU 구성요소에 대해 배웠다. 오늘은 그 내용을 간략하게 정리해보려 한다. CPU는 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 장치이다. 내부에는 1.ALU 2.제어장치 3.레지스터 라는 구성요소가 있다. 1. ALU - 계산기 예를 들어 1과 2를 더하라는 계산을 하라하면 '1'과 '2'는 피연산자, '더하기'라는 수행할 연산이라고 할 수 있다. 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들인다. ALU는 레지스터와 제어장치로부터 받아들인 피연산자와 제어신호를 이용해 산술연산, 논리연산 등 다양한 연산을 수행한다. ALU가 내보내는 정보로는 특정 숫자나 문자가 될수도 있고, 메모리 주소가 될 수도 .. 2024. 1. 26.
프로그래머스 JavaScript - 문자열 다루기 기본 문제 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. s는 길이 1 이상, 길이 8 이하인 문자열입니다. s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다. s return "a234" false "1234" true 문제풀이 function solution(s) { var answer = true; if(typeof s !== Number){ answer= false }else if(s.length !==4 || s.length !== 6){ answer= false } return answer; } 간단한 문제라 생각하고 처.. 2024. 1. 26.
프로그래머스 JavaScript - 약수의 개수와 덧셈 문제 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 1 ≤ left ≤ right ≤ 1,000 left right result 13 17 43 24 27 52 문제풀이 1. 약수의 개수 구하기 function aa(num){ let sum = 0 for(let i =0; i 2024. 1. 25.
TIL #15) SQL 외래키 제약조건 Today I Learned 외래키(Foreign Key) 제약조건은 테이블과 다른 테이블간의 관계를 맺을 때 사용하는 제약 조건이다. 연관관계는 대표적으로 3가지의 형태로 표현가능하다. 1:1 - 1명의 사용자는 1개의 사용자정보를 가질 수 있다. 1:N - 1명의 사용자는 여러개의 주문을 할 수 있다. N:M - 여러명의 학생은 여러개의 학원을 등록할 수 있다. CREATE TABLE 테이블명 FOREIGN KEY (컬럼명) REFERENCES 참조_테이블명 (참조_컬럼명) ON DELETE [연계 참조 제약 조건] ON UPDATE [연계 참조 제약 조건] ); 기본적으로 외래 키 제약조건은 create table 문을 이용해 테이블을 생성함과 동시에 정의한다. 연계 참조 무결성 제약 조건의 종류 .. 2024. 1. 24.