[44] 부트캠프 TIL - 본캠프 26일차

2024. 9. 30. 16:53부트캠프 TIL

728x90

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

1-1)  sql 문제 : 오랜 기간 보호한 동물(2)

ㄴ 문제 : 입양간 동물 중 보호 기간이 가장 길었던 덩물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.

※ 테이블 2개를 참조해서 조회.

ㄴ 설명_1 : 조회할 컬럼 체크 - (동물아이디, 동물이름)

ㄴ 설명_2 : 2개 테이블 조인할 컬럼 체크 (동물아이디)

ㄴ 설명_3 : 보호 기간이 가장 길었던 동물 찾기 ( DATEDIFF() 활용해야함 )

ㄴ 설명_4 : 보호기간이 긴 순으로 조회 (ORDER BY ASC 오름차순 활용)

ㄴ 실제 쿼리 :

SELECT a.ANIMAL_ID, a.NAME
FROM ANIMAL_INS a LEFT JOIN ANIMAL_OUTS b ON a.ANIMAL_ID = b.ANIMAL_ID
WHERE b.DATETIME IS NOT NULL
ORDER BY DATEDIFF(DATE_FORMAT(a.DATETIME, '%Y-%m-%d'), DATE_FORMAT(b.DATETIME, '%Y-%m-%d')) ASC LIMIT 0,2;

 

※ 입양을 간 동물 중 보호기간이 가장 길었던 이 부분이 핵심 조건이다

ANIMAL_INS테이블의 보호시작일 & ANIMAL_OUTS테이블의 입양일 각 컬럼을 DATEDIFF를 활용해서 비교.

ㄴ 해당 조건을 WHERE문이나 서브쿼리에 활용할수 없기 때문에 ORDER BY 조건으로 직접 넣어주면 해결된다.

ㄴ ORDER BY 조건을 컬럼 조회에 넣어서 확인하면 일수를 직접 확인할 수 있다.

 

1-2) 알고리즘 문제 : 문자열 내림차순으로 배치하기

ㄴ문제를 보자마자 역순정렬하는 메소드 몇가지가 생각이났다.

ArrayList에서도 역순정렬이 있지만 Arrays.sort()로 바로 진행했다.

ㄴ 향상된 for문으로 가공한 String을 다 합쳐서 리턴해준다.

728x90