2024. 9. 13. 17:49ㆍ부트캠프 TIL
1. 프로그래머스 이용한 sql과 알고리즘 문제 해결
1-1) sql 문제 : 카테고리 별 상품 개수 구하기
ㄴ 문제 : 상품 테이블에서 상품카테고리 (코드의 앞자리 2개) 별 상품개수를 출력하는 SQL문을 출력해주세요. 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬해주세요.
ㄴ 설명_1 : 조회할 컬럼 체크 - 오늘은 기존 쿼리 그대로 활용이 아닌 2개다 지정컬럼명을 해줘야한다.
ㄴ 설명_2 : 지정컬럼명 - CATEGORY (카테고리 앞2자리 추출), PRODUCTS(각 카테고리별 상품의 개수)
ㄴ 설명_3 : 카테고리 코드를 기준으로 오름차순 정렬 (order by ASC)
ㄴ 설명_4 : 카테고리코드 2자리추출과 카테고리별 상품개수 추출이 메인이다.
- 2자리추출( SUBSTR(컬럼명, 시작위치, 글자수), 개수추출(COUNT함수 및 전체쿼리에 GROUP BY)
- 위 2가지를 사용해야하며, GROUP BY를 해주는 이유는 카테고리별로 개수를 구해야하기 때문에 GROUP BY로 카테고리를 그룹화 해줘야한다.
ㄴ 실제 쿼리 :
SELECT CATEGORY,
PRODUCTS
FROM
(
select SUBSTR(PRODUCT_CODE, 1, 2) AS 'CATEGORY', COUNT(*) AS 'PRODUCTS'
from PRODUCT
group by CATEGORY
) a;
ㄴ SUBSTR로 추출해낸 카테고리를 그룹화 하기 위해선 서브쿼리 사용이 필요하다.
ㄴ 먼저 메인테이블에서 추출해내야할 조건을 다 적고나서 괄호로 쿼리를 씌운다.
ㄴ 최상단에서 추출해야할 지정컬럼명을 그대로 입력해준다. (이때 지정컬럼명은 ORDER BY나 GROUP BY에 활용할 수 있게 설정된다.)
ㄴ GROUP BY로 CATEGORY를 그룹화시키고, a식별자를 넣어서 마무리한다.
※ 이번 SQL문제는 예전 SQL 4주차 강의 중 실습문제와 유사한 형태였다.
※ 개발 중에 데이터베이스 내장함수나 개발언어 메서드 등 사용법을 다 외우고 있진 못하더라도 이 상황에서 그거쓰면됐는데,,? 정도만 기억하고 있다면 바로 검색해서 활용할 수 있는데 이번에 바로 생각해냈고, 복습하듯이 문제를 풀어서 좋았다.
1-2) 알고리즘 문제 : 콜라츠 추측
ㄴ 아래 설명처럼 짝수면 2로 나누고, 홀수면 3을곱하고 1을 더한다.
ㄴ 1이 될때까지 반복을한다.
ㄴ num을 long타입으로 변경한다 - int제한 크기를 넘어서기때문에 미리 변환
ㄴ 1이 나올때까지 반복을 해야한다 - while문 조건에 1이 아닐경우로 걸고 1이면 반복문 종료되도록
ㄴ 짝수구하는 식으로 삼항연산자 활용하여 짝수와 홀수일때 각각 계산방법 진행.
ㄴ answer는 증감시켜서 while문 진행되는 수만큼 체크
ㄴ 횟수가 500번되면 -1리턴하고 break로 반복문 탈출
ㄴ 짝수 구하는 식만 알고 있다면 문제에 해당되는 조건들이 다 들어있어서 풀 수 있는 문제였다.
※ 문제를 제대로 읽지 않은 이슈가 있었다. 실행한 횟수를 구하는건데 실행한 결과값을 answer에 넣어서 return하는 것으로 계속 착각했다. 500번 되면 -1 return은 체크해서 cnt변수를 따로만들어서 횟수를 구하고, answer = n; 이렇게 계속 실행해서 오류가 났었다.
cnt변수도 필요없었고, answer로 횟수를 실행횟수와 500번 -1까지 한방에 return하면 끝나는 문제였다.
'부트캠프 TIL' 카테고리의 다른 글
[35] 부트캠프 TIL - 본캠프 17일차 (0) | 2024.09.17 |
---|---|
[34] 부트캠프 TIL - 본캠프 16일차 (2) | 2024.09.16 |
[32] 부트캠프 TIL - 본캠프 14일차 (2) | 2024.09.12 |
[31] 부트캠프 TIL - 본캠프 13일차 (1) | 2024.09.11 |
[30] 부트캠프 TIL - 본캠프 12일차 (0) | 2024.09.10 |