[35] 부트캠프 TIL - 본캠프 17일차

2024. 9. 17. 08:34부트캠프 TIL

728x90

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

1-1)  sql 문제 : 입양 시각 구하기(1)

ㄴ 문제 : 입양보낸 동물정보 테이블에서 입양시각별로 09:00부터 19:59까지 각 시간대별로 몇건의 입양이 발생했는지 조회해주세요. 결과는 시간대 순으로 정렬해주세요.

ㄴ 설명_1 : 조회할 컬럼 체크 - (시간과 입양건수)

ㄴ 설명_2 : 각 시간대 별로 입양건수 (GROUP BY로 그룹화 필요)

ㄴ 설명_3 : 각 시간대를 구해야함. (HOUR함수 사용)

ㄴ 설명_4 : 시간대 순 정렬 (ORDER BY 사용)

ㄴ 실제 쿼리 :

SELECT HOUR(DATETIME) as HOUR, COUNT(*) as COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATE_FORMAT(DATETIME, '%H:%m:%s')) BETWEEN '09:00:00' AND "19:59:59"
GROUP BY HOUR(DATETIME)
ORDER BY 1

 

 

ㄴ 초기에 CASE WHEN문으로 진행을 했는데 결과가 자꾸 HOUR에서 9가 가장 밑으로 정렬이 되었다.

ㄴ 데이터는 다 불러온거같은데 뭐가 문제인지 알수가 없어서 방식을 변경하였다.

 

ㄴ HOUR함수를 사용한 방법으로 변경하였고, 09:00에서 19:59분의 규칙을 맞추기위해 WHERE문에서 DATE_FORMAT을 사용했다.



 

1-2) 알고리즘 문제 : 나누어 떨어지는 숫자배열

ㄴ 1차로 반복문을 실행하여 answer 배열의 길이를 정해줄 변수를 작업한다.

ㄴ 이때 나누어떨어지는 수가 없을 경우에 answer를 조건에 맞게 -1로 지정한다.

ㄴ cnt로 구한 배열의길이로 answer에 넣어주고 반복문을 2차 실행한다.

ㄴ 똑같은 조건으로 반복문을 실행하고 num변수를 사용하여 answer에 배열안에 값을 넣어준다.

ㄴ 마지막으로 Arrays.sort()메서드를 활용하여 배열의 오름차순 정렬을해준다.

728x90