[55] 부트캠프 TIL - 본캠프 37일차

2024. 10. 15. 12:33부트캠프 TIL

728x90

1. 프로그래머스 이용한 sql과 알고리즘 문제 해결

1-1)  sql 문제 : 대여 기록이 존재하는 자동차 리스트 구하기

ㄴ 문제 : 자동차정보테이블과 자동차대여기록테이블에서 자동차 종류가 "세단"이고, 10월에 대여를 시작한 자동차 ID 리스트를 출력하는 SQL문을 작성해주세요. 자동차ID는 중복이 없어야하고, 자동차ID로 내림차순 정렬해주세요.

 

 

 

ㄴ 설명_1 : 조회할 컬럼 체크 (CAR_ID)

ㄴ 설명_2 : 테이블 2개 연동 JOIN할 컬럼체크 (CAR_ID)

ㄴ 설명_3 : 자동차 종류 세단 CAR_TYPE "세단"인 데이터

ㄴ 설명_4 : 대여 시작이 10월 - DATE_FORMAT()사용해서 월만 검색 "10"

ㄴ 설명_5 : 자동차ID 중복되면 안됨 - DISTINCT(CAR_ID)로 진행

설명_6 : 자동차 ID 내림차순 정렬 - ORDER BY DESC

ㄴ 실제 쿼리 :

SELECT DISTINCT(a.CAR_ID) 
FROM CAR_RENTAL_COMPANY_CAR a LEFT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY b ON
a.CAR_ID = b.CAR_ID
WHERE a.CAR_TYPE = "세단"
AND DATE_FORMAT(b.START_DATE, "%m") = "10"
ORDER BY a.CAR_ID DESC

 

 

1-2) 알고리즘 문제 : 시저암호

class Solution {
    public String solution(String s, int n) {
        String answer = "";
        int N = 0;
        for(int i = 0; i < s.length(); i++){
            N = s.charAt(i) + n;
            if(s.charAt(i) == ' '){
                answer += s.charAt(i);
            }else if(s.charAt(i) < 91 && N > 90 || N > 122){
                N -= 26;
                answer += (char) N;
            } else{
                answer += (char) N;
            }
        }
        return answer;
    }
}

ㄴ 알파벳 대소문자 아스키코드를 활용해야하는 문제이다.(검색해서 확인했다)

ㄴ charAt를 활용해서 s의 한글자씩 추출하여 n만큼 더해준다(시저암호 공식)

ㄴ 공백일 경우와 알파벳 아스키코드 범위를 벗어나는 경우 그 외에 경우 3가지 조건으로 answer에 값을 적용한다.

※ 오늘 알고리즘 문제는 풀지않고 바로 답안을 찾아보고 풀이를 해석했다. 생각할 겨를이 없는 상황이라 이렇게 찾아보면서 공부하는 것으로 대체하였다..  

728x90