매일 Algorithm 소마 준비 (SQL)

신재원·2023년 2월 23일
0

Algorithm

목록 보기
46/243

프로그래머스 2017 팁스타운

class Solution {
    public int solution(int n, int a, int b) {
        int answer = 0;


        // 만약 8 1 4 였음 answer 2
        // 3이나 4나 같다, 7이나 8이나 같다.

        // 2 4 5 7
        // 12 34 56 78

        // 8 4 7
        while (true) {
            /**
             * 나머지 계산을 해주는 이유
                a : 2, b : 3 이 입력값으로 주어졌다하면
                나누기만으로는 1경기밖에 하지않는다.
            **/
            a = a / 2 + a % 2; // 2 //1 // 0
            b = b / 2 + b % 2; // 4 // 2 // 1
            answer++;
            if (a == b) {
                break;
            }
        }
        return answer;
    }
}

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

# IFNULL(테이블, "변경할값")
SELECT WAREHOUSE_ID,	WAREHOUSE_NAME,	ADDRESS,IFNULL(FREEZER_YN, 'N') 
AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE "경기도%"
ORDER BY WAREHOUSE_ID;

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

# 조인을할 테이블을 '.' 으로 작성해줘야된다.
## 테이블끼리 join후 ON으로 외래키와 pk를 이어준다
SELECT BOOK.BOOK_ID, AUTHOR.AUTHOR_NAME, 
DATE_FORMAT(BOOK.PUBLISHED_DATE, "%Y-%m-%d") AS PUBLISHED_DATE
FROM BOOK join AUTHOR ON BOOK.AUTHOR_ID = AUTHOR.AUTHOR_ID
WHERE BOOK.CATEGORY LIKE '경제'
ORDER BY BOOK.PUBLISHED_DATE;

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

class Solution {
    public int[] solution(int brown, int yellow) {
        // return 값의 사이즈가 2 임으로 배열 사이즈 지정
        int[] answer = new int[2];
        int total = brown + yellow;

        /**
         * 사이즈 12
         (1,12) (2,6) (3,4) (4,3) (6,2) (12,1)
         가로가 세로보다 길거나 같다
         (4,3) (6,2) (12,1)
         세로의 길이가 3이상 이어야 노란색이 중앙에 위치할수있음
         가로의 길이는 세로의 길이와 같거나 세로보다 길어야함으로 가로도 3이상
         (4-2) * (3-2) = yellow 갯수
         **/
        for (int i = 3; i < total; i++) {
            int div = total / i;
            if (div >= 3) {
                int garo = Math.max(div, i);
                int sero = Math.min(div, i);
                int center = (garo - 2) * (sero - 2);

                if (center == yellow) {
                    answer[0] = garo;
                    answer[1] = sero;
                }
            }
        }
        return answer;
    }
}

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

# 상품코드 별 매출액(판매가 * 판매량) 합계를 출력
SELECT PRODUCT.PRODUCT_CODE, 
SUM(PRODUCT.PRICE * OFFLINE_SALE.SALES_AMOUNT) AS SALES

# PRODUCT 테이블과 OFFLINE_SALE 테이블에서
FROM PRODUCT join OFFLINE_SALE ON PRODUCT.PRODUCT_ID =
OFFLINE_SALE.PRODUCT_ID

# 상품코드 별 
GROUP BY PRODUCT.PRODUCT_CODE

# 결과는 매출액을 기준으로 내림차순 정렬해주시고 
# 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.
ORDER BY SALES DESC, PRODUCT.PRODUCT_CODE;

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

SELECT ANIMAL_INS.ANIMAL_ID, ANIMAL_INS.NAME

# ANIMAL_ID는 ANIMAL_INS의 ANIMAL_ID의 외래 키입니다.
FROM ANIMAL_INS JOIN ANIMAL_OUTS ON
ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID

# 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회
WHERE ANIMAL_INS.DATETIME > ANIMAL_OUTS.DATETIME

# 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.
ORDER BY ANIMAL_INS.DATETIME;

프로그래머스 월간 코드 챌린지 시즌1

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        
        int count = 0;
        int countzero = 0;
        // 입출력 예를 보면, 문자열 "1"이 남을때 까지 반복한다.
        while(!s.equals("1")){
            int countone = 0;
            for(int i = 0 ; i < s.length(); i++){
                if(s.charAt(i) == '1'){
                    countone++;
                }else{
                    countzero++;
                }
            }
            // countone, 즉 0을 제거후 길이를 이진변환해준다.
            s = Integer.toBinaryString(countone);
            // 몇번의 이진 변환을 했는지 증가
            count++;
        }
        answer[0] = count;
        answer[1] = countzero;
        return answer;
    }
}

프로그래머스 (LEVEL 0)

import java.util.*;
class Solution {
    public String[] solution(String my_str, int n) {
       
        
        List<String> list = new ArrayList<>();

        while(true){
            if(my_str.length() < n){
            if(my_str.length() == 0){
                break;
            }else{
                // 자르고 남은 문자열 바인딩
                list.add(my_str);
                break;
            }
            }
            String sub = my_str.substring(0,n);
            list.add(sub);

            // my_str 문자열에서 자르고 난 문자열을 공백처리한다.
            my_str = my_str.replace(sub, "");
        }
        
        String[] answer = new String[list.size()];
        
        for(int j = 0 ; j < list.size(); j++){
            answer[j] = list.get(j);
        }
        return answer;
    }
}

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

SELECT ANIMAL_INS.NAME, ANIMAL_INS.DATETIME

# NULL을 비교할경우 INNER 조인이 아닌, LEFT 조인을 사용
FROM ANIMAL_INS LEFT JOIN ANIMAL_OUTS ON
ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID

# ANIMAL_OUTS 에는 있지만 ANIMAL_INS에는 없는 ID를 찾는다
WHERE ANIMAL_OUTS.ANIMAL_ID IS NULL
ORDER BY ANIMAL_INS.DATETIME
LIMIT 3;

프로그래머스 (LEVEL 1)

class Solution {
    public int solution(int n) {
        int answer = 0;
        int [] arr = new int[n+1];
        arr[0] = 0;
        arr[1] = 1;
        for(int i = 2; i <= n; i++){
          
            int a = arr[i-1] + arr[i-2];
            // 자료형의 크기의 이유로 나눠주었다고 한다.
            arr[i] = a % 1234567;
        }
        return arr[n];
    }
    
}

0개의 댓글