일기

12/4

Realuda72 2024. 12. 4. 22:12

오늘 한 일

코딩테스트 연습

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개 풀기가 있었는데 풀다보니 재밌어서 마구마구 풀었다.

 

트러블 슈팅

app.use(errorHandlerMiddleware);

-> 처음엔 

app.use(errorHandlerMiddleware());

로 되어 있었는데, errorHandlerMiddleware자체가 함수라서 ()를 붙이면 에러가 있었다.

 

'일기' 카테고리의 다른 글

(JavaScript) 옹알이(2)  (0) 2024.12.09
12/5  (0) 2024.12.05
12/3  (0) 2024.12.03
12/2  (0) 2024.12.03
11/28  (0) 2024.11.29