오늘 한 일
코딩테스트 연습
JavaScript
과일 장수 (https://school.programmers.co.kr/learn/courses/30/lessons/135808)
function solution(k, m, score) {
var answer = 0;
// 1. 과일 점수를 역순으로 정렬한다.
var sorted = score.sort((a,b) => b-a);
// 2. m번째 과일마다 점수를 계산한다.
for(i = m-1; i < sorted.length; i += m){
answer += sorted[i] * m;
}
return answer;
}
1. 과일을 점수 역순으로 정렬한다.
2. m번째 과일마다 점수를 계산한다.
완전탐색 모의고사(https://school.programmers.co.kr/learn/courses/30/lessons/42840)
function solution(answers) {
// 1. 수포자의 점수를 배열로 저장한다.
var math1 = [1,2,3,4,5];
var math2 = [2,1,2,3,2,4,2,5];
var math3 = [3,3,1,1,2,2,4,4,5,5];
var answer = [];
var cnt1 = 0, cnt2 = 0, cnt3 = 0;
// 2. 정답 배열을 순회하며 각 수포자의 정답 수를 체크한다.
for(var i in answers){
if(math1[i%5] === answers[i]) cnt1++;
if(math2[i%8] === answers[i]) cnt2++;
if(math3[i%10] === answers[i]) cnt3++;
}
// 3. 정답 수가 다른 모든 수포자들의 정답 수보다 크거나 같으면 배열에 넣는다.
if(cnt1 >= Math.max(cnt2, cnt3)) answer.push(1);
if(cnt2 >= Math.max(cnt1, cnt3)) answer.push(2);
if(cnt3 >= Math.max(cnt1, cnt2)) answer.push(3);
return answer;
}
1. 수포자의 점수를 배열로 저장한다.
2. 정답 배열을 순회하며 각 수포자의 정답 수를 체크한다.
3. 정답 수가 다른 모든 수포자들의 정답 수보다 크거나 같으면 배열에 넣는다.
소수 만들기(https://school.programmers.co.kr/learn/courses/30/lessons/12977)
function solution(nums) {
var answer = 0;
// 1. 배열에서 세 개의 숫자를 뽑는다.
for(var i = 0; i < nums.length; i++){
for(var d = i+1; d < nums.length; d++){
for(var x = d+1; x < nums.length; x++){
var n = nums[i] + nums[d] + nums[x];
if(IsPrime(n)){
answer++;
}
}
}
}
// 2. 뽑은 숫자들의 합이 소수인지 확인한다.
function IsPrime(num){
if( num % 2 === 0)
return num === 2 ? true : false;
const sqrt = parseInt(Math.sqrt(num));
for( let divider = 3; divider <= sqrt; divider += 2) {
if(num % divider === 0)
return false;
}
return true;
}
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
console.log('Hello Javascript')
return answer;
}
1. 배열에서 세 개의 숫자를 뽑는다.
2. 뽑은 숫자들의 합이 소수인지 확인한다.
SQL
이름이 있는 동물의 아이디(https://school.programmers.co.kr/learn/courses/30/lessons/59407)
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID
역순 정렬하기(https://school.programmers.co.kr/learn/courses/30/lessons/59035)
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC
중복 제거하기(https://school.programmers.co.kr/learn/courses/30/lessons/59408)
SELECT COUNT(DISTINCT NAME) AS NAME_COUNT
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
동물의 아이디와 이름(https://school.programmers.co.kr/learn/courses/30/lessons/59403)
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
동물 수 구하기(https://school.programmers.co.kr/learn/courses/30/lessons/59406)
SELECT COUNT(*) AS count
FROM ANIMAL_INS
동명 동물 수 찾기(https://school.programmers.co.kr/learn/courses/30/lessons/59041)
SELECT NAME, COUNT(NAME) AS count
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME HAVING COUNT(NAME)>1
ORDER BY NAME
아픈 동물 찾기(https://school.programmers.co.kr/learn/courses/30/lessons/59036)
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
상위 n개 레코드(https://school.programmers.co.kr/learn/courses/30/lessons/59405)
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1
최솟값 구하기(https://school.programmers.co.kr/learn/courses/30/lessons/59038)
SELECT DATETIME AS '시간'
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1
어린 동물 찾기(https://school.programmers.co.kr/learn/courses/30/lessons/59037)
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION <> 'Aged'
여러 기준으로 정렬하기(https://school.programmers.co.kr/learn/courses/30/lessons/59404)
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC
이름에 el이 들어가는 동물 찾기(https://school.programmers.co.kr/learn/courses/30/lessons/59047)
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE '%el%'
AND ANIMAL_TYPE = 'Dog'
ORDER BY NAME
나이 정보가 없는 회원 수 구하기(https://school.programmers.co.kr/learn/courses/30/lessons/131528)
SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE AGE IS NULL
가장 비싼 상품 구하기(https://school.programmers.co.kr/learn/courses/30/lessons/131697)
SELECT PRICE AS MAX_PRICE
FROM PRODUCT
ORDER BY PRICE DESC
LIMIT 1
NULL 처리하기(https://school.programmers.co.kr/learn/courses/30/lessons/59410)
SELECT ANIMAL_TYPE, COALESCE (NAME, 'No name') AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
경기도에 위치한 식품창고 목록 출력하기(https://school.programmers.co.kr/learn/courses/30/lessons/131114)
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, COALESCE(FREEZER_YN, 'N')
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기도%'
강원도에 위치한 생산 공장 목록 출력하기(https://school.programmers.co.kr/learn/courses/30/lessons/131112)
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%'
DATETIME에서 DATE로 형 변환(https://school.programmers.co.kr/learn/courses/30/lessons/59414)
SELECT ANIMAL_ID, NAME, CAST(DATETIME AS DATETIME)
FROM ANIMAL_INS
흉부외과 또는 일반외과 의사 목록 출력하기(https://school.programmers.co.kr/learn/courses/30/lessons/132203)
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD = 'CS'
OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME
가격이 제일 비싼 식품의 정보 출력하기(https://school.programmers.co.kr/learn/courses/30/lessons/131115)
SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1
이름이 없는 동물의 아이디(https://school.programmers.co.kr/learn/courses/30/lessons/59039)
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
조건에 맞는 회원 수 구하기(https://school.programmers.co.kr/learn/courses/30/lessons/131535)
SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE YEAR(JOINED) = 2021
AND AGE BETWEEN 20 AND 29
중성화 여부 파악하기(https://school.programmers.co.kr/learn/courses/30/lessons/59409)
SELECT ANIMAL_ID, NAME,
CASE
WHEN SEX_UPON_INTAKE LIKE 'Neutered%' THEN 'O'
WHEN SEX_UPON_INTAKE LIKE 'Spayed%' THEN 'O'
ELSE 'X'
END AS '중성화'
FROM ANIMAL_INS
과제로 SQL문제 4개 풀기가 있었는데 풀다보니 재밌어서 마구마구 풀었다.
트러블 슈팅
-> 처음엔
로 되어 있었는데, errorHandlerMiddleware자체가 함수라서 ()를 붙이면 에러가 있었다.
끗