본문 바로가기

분류 전체보기47

[프로그래머스/Lv.2] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 WITH CARS_BY_OPTIONS AS (SELECT CAR_TYPEFROM CAR_RENTAL_COMPANY_CARWHERE OPTIONS like '%통풍시트%' OR OPTIONS like '%열선시트%' OR OPTIONS like '%가죽시트%')SELECT CAR_TYPE, COUNT(*) AS CARSFROM CARS_BY_OPTIONSGROUP BY CAR_TYPEORDER BY CAR_TYPE ASC1) WITH로 '통풍시트','열선시트','가죽시트' OPTION이 포함된 데이터 테이블을 생성.2) 아래 메인 쿼리문에서 CAR_TYPE별로 그룹화 및 오름차순 정렬. 2025. 1. 23.
[프로그래머스/Lv.2] 짝지어 제거하기 1) 스택을 사용한다.2) peek()을 사용해 top을 확인 후 현재 문자와 동일하면 현재 문자를 push해줄 필요없이 top을 pop해준다.3) 2)에서 동일하지 않다면 현재 문자를 push한다.  import java.util.*;class Solution{ public int solution(String s) { Stack charStack = new Stack(); for(char word : s.toCharArray()) { if(!charStack.isEmpty() && charStack.peek() == word) { charStack.pop(); } .. 2025. 1. 21.
[프로그래머스/Lv.1] 입양 시각 구하기(1) SELECT DATE_FORMAT(DATETIME, '%H') AS HOUR, COUNT(ANIMAL_ID) AS COUNTFROM ANIMAL_OUTSWHERE HOUR(DATETIME) >= 9AND EXTRACT(HOUR FROM DATETIME) DATETIME에서 시간대만 추출 후 시간대별로 그룹을 짓고 시간대별로 내림차순 정렬하였다. DATE_FORMAT(DATETIME, '%H'), HOUR(DATETIME), EXTRACT(HOUR FROM DATETIME)이렇게 3가지 형태로 DATETIME TYPE에서 시간대만 추출할 수 있다. 2025. 1. 21.
[프로그래머스/Lv.2] 다음 큰 숫자 1) n을 2진법으로 바꿨을 때 1이 몇개 있는지 카운팅 한다.2) n 보다 큰 숫자를 하나씩 2진법으로 변환하면서 1을 카운팅해서 '1)'의 1 개수와 동일하면 가장 작은 자연수가 된다.   class Solution { public int countOne(int a) { int countOne = 0; while(a != 0) { if(a % 2 == 1) { ++countOne; } a /= 2; } return countOne; } public int solution(int n) { int answer = 0; .. 2025. 1. 16.
[프로그래머스/Lv.1] 삼총사 [접근방식] 3중 for문 말고 two pivots방식으로 접근 해봤다. 1) 인덱스 i 부터 시작해서 pivot1은 i +1 위치에, pivot2는 마지막 인덱스 위치(numberLength - 1)부터 시작해서 pivot2를 하나씩 앞 인덱스로 움직이며 합이 0인 조합을 찾는다. 2) pivot1이 numberLength -1에 도착하면 while문을 멈추고 i인덱스를 하나 증가한다. 3) 이때 i인덱스값 + pivot인덱스값 이 가장큰 숫자를 가르키는 pivot2값 보다 작다면 더이상 pivot2를 움직여서 비교하는게 의미가 없어지니 ++pivot1, pivot2은 제일 끝 인덱스로 옮겨주고 계속진행한다. (오름차순 정렬을 한 이유)    import java.util.Arrays;class Sol.. 2025. 1. 16.
[프로그래머스/Lv.1] 3진법 뒤집기 class Solution { public int solution(int n) { int answer = 0; String three = ""; // 10진법 n을 3진법으로 바꾼다. // 뒤집은 3진법 숫자를 원하니 three 뒤에 n % 3의 결과를 이어 붙여서 뒤집는 과정을 생략한다. while(n != 0) { three += n % 3; n /= 3; } // 매번 three.length()을 호출하지 않고 한번만 호출해 length 변수에 담아둔다. int length = three.length(.. 2025. 1. 16.