매일 Algorithm 소마 준비 (SQL)

신재원·2023년 2월 21일
0

Algorithm

목록 보기
44/243

프로그래머스 (LEVEL 1 , 스택/큐)

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        
    
        List <Integer> list = new ArrayList<>();
        
        for(int i = 0; i < arr.length; i++){
            if(i == 0){
                list.add(arr[0]);
            }else{
            // [1,1,3,3,0,1,1]
            // 배열의 값들이 같은지 확인
            if(arr[i-1] == arr[i]){
                continue;
            }else{
                list.add(arr[i]);
            }
                }
        }
        int[] answer = new int[list.size()];
       
        // 배열에 list 값들을 담아준다.
        for(int j = 0 ; j < list.size(); j++){
            answer[j] = list.get(j);
        }
        
        return answer;
    }
}

프로그래머스 SQL (SELECT LEVER 1 , 소마 1차 테스트 준비)

# 소수 첫번째 = ROUND 0, AS = 별칭
SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR 
WHERE CAR_TYPE = "SUV"

프로그래머스 SQL (SELECT LEVER 2 , 소마 1차 테스트 준비)

# NULL이 아닐 조건 예시 : TLSO IS NOT NULL
# 단어가 조건일시 : 무조건 작은 따옴표 ''(O)
# 오름차순 정렬일시 ORDER BY
# 내림차순 정렬일시 ORDER BY DESC
# DATE_FORMAT = 테이블을 치환한다. %Y = 년도, %m = 월, %d = 일 대소문자 주의
SELECT MEMBER_ID, MEMBER_NAME, GENDER, 
DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH) = 3
AND TLNO IS NOT NULL
AND GENDER = 'W'
ORDER BY MEMBER_ID;

프로그래머스 SQL (SELECT LEVER 1 , 소마 1차 테스트 준비)

## LIKE = 같은, 
# 강원도% = 강원도로 시작해서 끝나는건 아무문자나
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%' 
ORDER BY FACTORY_ID;

프로그래머스 SQL (SELECT LEVER 1 , 소마 1차 테스트 준비)

# ~일때는 내림차순, ~일때는 오름차순 이면
## ORDER BY AGE DESC, AGE 나이는 내림차순, PT_NAME는 오름차순이된다.
# IFNULL = NULL 일경우 값 지정 (띄어쓰기 X)
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME;

프로그래머스 (LEVEL 1 , 정렬)

import java.util.*;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        
        for(int i = 0; i < commands.length; i++){
            int a;
            int b;
            int c;
            
            a = commands[i][0]; // 2
            b = commands[i][1]; // 5
            c = commands[i][2]; // 3
            
            // index를 기준으로 복사, (1,3) 이면 index 기준 (0,2)가됨
            int [] total = Arrays.copyOfRange(array, a-1, b);
            Arrays.sort(total);
            answer[i] = total[c-1];
        }
        
        return answer;
    }
}

프로그래머스 SQL (SELECT LEVER 1 , 소마 1차 테스트 준비)

# 날짜로 조건이 나오면 무조건 DATE_FORMAT을 해본다
SELECT DR_NAME, DR_ID, MCDP_CD, 
DATE_FORMAT(HIRE_YMD, "%Y-%m-%d") AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD LIKE 'CS' OR MCDP_CD LIKE 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME;

프로그래머스 SQL (SELECT JOIN LEVER 1 , 소마 1차 테스트 준비)

# SELET : 조인하여 결과물로 만들 테이블
# FROM : (INNER) 생략가능 JOIN할 테이블 작성
# ON : 테이블 기본키 = 상대 테이블 외래키
# WHERE : 단일 테이블 조건 작성하듯이 작성

SELECT FIRST_HALF.FLAVOR
FROM FIRST_HALF JOIN ICECREAM_INFO
ON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVOR
WHERE TOTAL_ORDER > 3000 AND INGREDIENT_TYPE LIKE 'fruit%'
ORDER BY TOTAL_ORDER DESC;

프로그래머스 SQL (SELECT LEVER 1 , 소마 1차 테스트 준비)

# 날짜 : YEAR() : 년 반환, MONTH() : 월 반환
SELECT BOOK_ID,
DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK
WHERE YEAR(PUBLISHED_DATE) = 2021 AND CATEGORY LIKE '인문'
ORDER BY BOOK_ID;

프로그래머스 SQL , GROUP BY (SELECT LEVER 2 , 소마 1차 테스트 준비)

# GROUP BY는 특정 컬럼을 그룹 짓는다. 보통 집합 합수와 같이 쓰인다 
# (AVG, COUNT, SUM)
# HAVING는 GROUP BY 의 WHERE절 같은 느낌
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING count(*) >=2
ORDER BY USER_ID ASC, PRODUCT_ID DESC;

프로그래머스 완전탐색 (LEVEL 1)

class Solution {
    public int solution(int[][] sizes) {
        int answer = 0;
        int wMax = 0;
        int hMax = 0;
        
        for(int i = 0 ; i < sizes.length; i++){
            //[[60, 50], [30, 70], [60, 30], [80, 40]]
            int w = Math.max(sizes[i][0], sizes[i][1]);
            int h = Math.min(sizes[i][0], sizes[i][1]);
            // 지금 까지 입력된 값을 비교
            wMax = Math.max(wMax,w);
            hMax = Math.max(hMax,h);
        }
        return wMax * hMax;
    }
}

0개의 댓글