전체 글
-
[백준 10986] 나머지 합 - javascript,node.js,구간합,누적합알고리즘/코딩 테스트 2023. 2. 13. 14:59
문제링크 : https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 알고리즘 : 1. n개의 수를 누적합을 저장한다. 2. 아래 구간합의 나머지 수학 공식을 알아야 한다. - 즉 총합의 나머지가 0과 같아야 한다 했으니 결국 좌변의 합에 % m을 한 것과 우번의 합에 % m을 한것이 같아야 한다. 3. 조합을 이용한다. 즉 다른 n개 중 순서 상관없이 r개를 뽑는다. n!/(n-r)!r! 즉 하나의 식으..
-
[백준 16139] 인간-컴퓨터 상호작용 - 누적합, javascript,node.js알고리즘/코딩 테스트 2023. 2. 13. 13:42
문제: https://www.acmicpc.net/problem/16139 16139번: 인간-컴퓨터 상호작용 첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째 www.acmicpc.net 알고리즘 : 1. 특정 알파벳 마다 누적합의 개수를 저장하기 위해 map을 이용한다. - map을 사용하지 않고 일일이 누적합을 구할 시 50점을 받게 된다. 2. 누적합의 개수를 구할 때는 map.get을 이용한다. 전체코드 const filePath = require('path').join(__dirname, '/test.txt'); c..
-
[백준] node.js 즉 javascript로 풀기위한 세팅알고리즘/코딩 테스트 2023. 2. 13. 12:37
1. input값 읽어오기 const input = require('fs').readFileSync('/dev/stdin').toStirng().trim().split('\n') 2. 문제에서 주어진 변수 저장하기 const [n,m] = input[0].split(' ').map(Number) 주로 첫 번째 줄에 n개 등등 숫자를 주어지므로 map(Number)를 사용하여 숫자로 저장한다. 참고로 map(v=>v+)보다 속도가 빠르다. 3. 출력값 저장하기 const answer = [] (출력값 배열에 저장) console.log(answer.join('\n')) 매번 출력 가능할 때 console.log를 찍는 것보다 하나의 배열에 값을 저장하고 줄바꿈으로 join하는 것이 시간 효율성이 좋다. 필..
-
[코딩테스트] 프로그래머스 javascript 2단계 - 영어 끝말잇기알고리즘/코딩 테스트 2023. 2. 10. 16:08
영어 끝말잇기 - 끝말잇기 규칙 3가지를 확인하는 문제이다. - 행과 열을 계산하는 규칙을 알아야 한다. 문제 설명 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다. 이전에 등장했던 단어는 사용할 수 없습니다. 한 글자인 단어는 인정되지 않습니다. 다음은 3명이 끝말잇기를 하는 상황을 나타냅니다. tank → kick → know → wheel → land → dream → mother → robot → tank 위 끝말잇기는 다음과 같이 ..
-
[My SQL] 숫자 연산자 , 문자 연산자알고리즘/My SQL 2023. 2. 10. 15:09
숫자 연산자 BETWEEN NOT BETWEEN {MIN} AND {MAX} 두 값 사이가 아닌 곳에 있음 BETWEEN {MIN} AND {MAX} 두 값 사이에 있음 -- 코드를 입력하세요 SELECT MONTH(START_DATE) AS MONTH,CAR_ID, COUNT(*) AS RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY H WHERE YEAR(START_DATE)=2022 AND MONTH(START_DATE) BETWEEN 8 AND 10 AND CAR_ID IN (SELECT HH.CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY HH WHERE YEAR(HH.START_DATE)=2022 AND MONTH(HH.ST..
-
[My SQL] 시간 연산자 , 날짜 연산자알고리즘/My SQL 2023. 2. 10. 15:08
날짜 관련 함수들 현재 날짜 CURRENT_DATE, CURDATE 현재 날짜 반환 CURRENT_TIME, CURTIME 현재 시간 반환 CURRENT_TIMESTAMP, NOW 현재 시간과 날짜 반환 날짜 생성 DATE 문자열에 따라 날짜 생성 TIME 문자열에 따라 시간 생성 YEAR 주어진 DATETIME값의 년도 반환 MONTHNAME 주어진 DATETIME값의 월(영문) 반환 MONTH 주어진 DATETIME값의 월 반환 WEEKDAY 주어진 DATETIME값의 요일값 반환(월요일: 0) DAYNAME 주어진 DATETIME값의 요일명 반환 DAYOFMONTH, DAY 주어진 DATETIME값의 날짜(일) 반환 SELECT car_id, if(sum(if('2022-10-16' between ..
-
[My SQL] GROUP BY ,JOIN - 여러 테이블 조립하기알고리즘/My SQL 2023. 2. 10. 15:08
GROUP BY - 조건에 따라 집계된 값을 가져옵니다. 여러 컬럼을 기준으로 그룹화할 수도 있습니다. -- 코드를 입력하세요 SELECT MCDP_CD AS 진료과코드,COUNT(APNT_YMD)AS 5월예약건수 FROM APPOINTMENT WHERE APNT_YMD LIKE '2022-05%' GROUP BY MCDP_CD ORDER BY 5월예약건수,진료과코드 -- 코드를 입력하세요 SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT FROM ANIMAL_OUTS WHERE HOUR(DATETIME) BETWEEN 9 AND 19 GROUP BY HOUR(DATETIME) ORDER BY HOUR(DATETIME) WITH ROLLUP - 전체의 집계값 위의 각..
-
[My SQL] 전반적인 문법 - select알고리즘/My SQL 2023. 2. 10. 10:03
ORDER BY- 특정 컬럼을 기준으로 데이터를 정렬할 수 있습니다. ORDER BY 구문을 사용해서 특정 컬럼을 기준으로 데이터를 정렬할 수 있습니다. ASC : 오름차순, DESC : 내림차순 다중 정렬 시 , 사용 -- 코드를 입력하세요 SELECT ANIMAL_ID,NAME,DATETIME FROM ANIMAL_INS ORDER BY NAME ,DATETIME DESC DISTINCT - 중복된 값들을 제거합니다. GROUP BY 와 달리 집계함수가 사용되지 않습니다. GROUP BY 와 달리 정렬하지 않으므로 더 빠릅니다. SELECT COUNT(distinct(NAME)) AS 'COUNT' FROM ANIMAL_INS WHERE NAME IS NOT NULL IS NULL - NULL인지 확..