코딩테스트 14

프로그래머스 - 배열의 길이를 2의 거듭제곱으로 만들기

처음 생각한 방법은 ArrayList를 사용해 arr의 값을 옮겨준 다음 list의 길이가 2의 거듭제곱보다 작을 때의 거듭제곱을 구해 list에 거듭제곱이 될 때까지 0을 넣는 방법이었습니다! 처음에 ArrayList에 arr의 값을 옮겨주고~ ArrayList list = new ArrayList(); for(int n : arr) list.add(n); Math.pow()를 사용해 2의 거듭제곱과 list의 길이를 비교했습니다! int res = 0; for(int i = 0; i

코딩테스트 2023.12.21

프로그래머스 - 가격대 별 상품 개수 구하기

가격대를 0, 10000, 20000과 같이 표현하기 때문에 원래 가격 뒤 4자리 숫자를 없애면 되겠다고 생각했기 때문에 TRUNCATE를 사용했습니다! SELECT TRUNCATE(PRICE, -4) AS 'PRICE_GROUP', COUNT(PRODUCT_ID) AS 'PRODUCTS' FROM PRODUCT 그 다음! 가격대 별로 묶어줘야하기 때문에 GROUP BY PRICE_GROUP 마지막으로 오름차순 정리까지 해주면~ ORDER BY PRICE_GROUP 최종 코드! SELECT TRUNCATE(PRICE, -4) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS FROM PRODUCT GROUP BY PRICE_GROUP ORDER BY PRICE_GROUP ..

코딩테스트 2023.12.20

프로그래머스 - 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

자동차 종류를 기준으로 그룹별로 묶어야겠죠? GROUP BY를 사용해봅시다! 먼저! CAR_TYPE과 CAR_TYPE별 차의 개수를 구하기 위한 컬림 CARS를 가져올겁니다! SELECT CAR_TYPE, COUNT(CAR_TYPE) AS 'CARS' FROM CAR_RENTAL_COMPANY_CAR 그리고! 통풍시트, 열선시트, 가죽시트 셋 중 하나라도 포함하고 있는 경우를 찾아야합니다! 이때 CONTAINS를 사용해도 되지만 여러개의 조건이 달려있기 때문에 저는 REGEXP를 사용해 볼 것 입니다~! WHERE OPTIONS REGEXP('통풍시트|열선시트|가죽시트') 이렇게 하게 되면 OPTIONS에서 통풍시트, 열선시트, 가죽시트 중 하나라도 포함하는 경우를 찾아줍니다. ( )에는 여러가지 정규식..

코딩테스트 2023.12.20

프로그래머스 - 세 개의 구분자

저는 split을 사용해서 문자열을 나누어 준 다음 ArrayList를 사용해 문자열의 길이를 비교해주는 방법을 생각했습니다! import java.util.*; class Solution { public String[] solution(String myStr) { String[] s = myStr.split("[abc]"); ArrayList list = new ArrayList(); for(String str : s){ if(str.length() > 0) list.add(str); } if(list.size() == 0) list.add("EMPTY"); String[] answer = new String[list.size()]; int n = 0; for(String str : list) answ..

코딩테스트 2023.12.20

프로그래머스 - 과일로 만든 아이스크림 고르기

여기서 문제는 테이블이 2개가 있고 이를 합쳐야한다는 점입니다.. 하지만! 이 두 테이블은 FLAVOR라는 공통된 컬럼이 있기 때문에 INNER JOIN을 사용하면 될 것 같습니다! 그럼 SELECT FIRST_HALF.FLAVOR WHERE FIRST_HALF INNER JOIN ICECREAM_INFO ON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVOR FIRST_HALF 테이블에 ICECREAM_INFO 테이블을 합쳐줍니다! 그 때 공통된 컬럼이 FIRST_HALF의 FLAVOR와 ICECREAM_INFO의 FLAVOR기 때문에 ON을 사용해서 합쳐줍니다~ 그 다음! 이미 테이블이 합쳐졌기 때문에 WHERE INGREDIENT_TYPE = 'fruit_based' AND ..

코딩테스트 2023.12.19

프로그래머스 - 평균 일일 대여 요금 구하기

새로운 칼럼을 만들어야합니다! 새로운 칼럼을 만드는 방법은 SELECT ' ~ ' 가 있습니다! 새로운 칼럼을 만드는 동시에 DAILY_FEE의 평균을 구해서 정수로 만들어봅시다! SELECT ROUND(AVG(DAILY_FEE)) AS 'AVERAGE_FEE' 소수 첫 번째 자리에서 반올림(정수)하기 때문에 ROUND로 정수로 만들고 AVG를 사용해서 DAILY_FEE의 평균을 내고 그 값을 AVERAGE_FEE에 넣어줍니다! 이때 AS는 이름을 새로 지어주는 키워드입니다! 평균을 낸 값에 AVERAGE_FEE라는 이름을 새로 지어줍니다! FROM CAR_RENTAL_COMPANY_CAR 테이블에서 가져와주고~ WHERE CAR_TYPE = "SUV" 차가 SUV인 데이터만 가져와라~ 이렇게 하면 최종..

코딩테스트 2023.12.19

프로그래머스 - 12세 이하인 여자 환자 목록 출력하기

PATIENT 테이블에서 이름, 번호, 성별, 나이, 전화번호를 조회해야하기 때문에 SELECT PT_NAME, PT_NO, GEND_CD, AGE, TLNO FROM PATIENT 이렇게 적어줍니다! 근데 문제에서 전화번호가 NULL , 즉 없는 경우 NONE으로 출력하라고 하기 때문에 SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO FROM PATIENT 만약 NULL이라면 TLNO를 NULL로 바꿔라~ 하는 IFNULL(TLNO, 'NONE') AS TLNO 를 넣어줍니다! 그리고 나머지 조건들은 WHERE에 넣어주면 되겠쬬? WHERE AGE

코딩테스트 2023.12.19