본문 바로가기

프로그래머스 풀이

(85)
[프로그래머스SQL] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/151139#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 어려운 문제였다. 그룹바이를 두개의 컬럼으로 걸 수 있는 능력이 있는가 묻는 문제였다. 또한 서브쿼리도 그룹바이를 써야하고 메인쿼리에서도 그룹바이를 써야하는 문제로 신선했다.그런데 메인 쿼리에서 WHERE START_DATE>="2022-08-01" and START\_DATE이것을 제거하면 틀렸습니다가 나오는데 이미 서브쿼리에서 다 정재된 CAR_ID가 오는것인데 왜 한 번 더 하냐면 서브..
[프로그래머스LV3] 순위 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/49191#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 위상정렬을 가장 먼저 떠올릴 수 있었지만 2번의 그래프 탐색으로도 끝낼 수 있는 문제이다. 승자 -> 패자 패자 -> 승자  그래프로 두개 만들어 두고 한번씩 탐색한 후 각 노드가 연관된 노드의 개수가 5이면 순위를 정할 수 있다고 판단한다. 이렇게도 풀 수 있지만 위상정렬을 사용해서도 풀 수 있는데 위상정렬은 그래프의 순서를 유지하여 정렬하는 방법이다.  문제에서 준 예제를 그래프로 표현하면..
[프로그래머스 SQL] 헤비 유저가 소유한 장소 https://school.programmers.co.kr/learn/courses/30/lessons/77487 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 하나의 테이블에서 두개 이상의 튜플을 가진 것들을 출력하는 문제이다. 난 그룹화하여 2개 이상을 셀렉트하고 그것을 IN 함수로 처리했다. 다른 풀이도 모두 비슷한 방향으로 풀이한 것 같다. -- 코드를 입력하세요SELECT * FROM PLACES WHERE HOST_ID IN ( SELECT HOST_ID FROM PLACES GROUP BY HOST_ID ..
[프로그래머스LV3] 가장 긴 팰린드롬 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/12904#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 팰린드롬이란 뒤집어도 같은 문자열이 되는 것을 말한다. aba , aaa 같은 경우가 팰린드롬이다. 나 같은 경우는 이 문제를 단순 반복문으로 풀어냈는데 효율성 테스트도 잘 통과되었다. 그러나 마나커? 마나허? 알고리즘을 사용하는 문제라고 한다. 다음에 한번 정리를 하는 것으로 하자 #include #include using namespace std;int solution(string s){ ..
[프로그래머스LV2] 과제 진행하기 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr Greedy 라고 해야할까? 일반적인 구현문제이다. 주어진 조건을 잘 지키면 되지만 문자열로 주어진 시간을 분단위로 어떻게 잘 바꿔서 컨트롤할 수 있느냐가 관건인 문제였다.  우선순위 큐를 사용해 진행해야하는 밀린 과제들을 컨트롤 해 주었다. #include #include #include #include #include using namespace std;pair timesplit(string t..
[프로그래머스LV3] 연속 펄스 부분 수열의 합 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/161988# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr O(N^2)으로 풀어내면 손쉽게 풀 수 있지만 그렇게 하면 N = 50만이기 때문에 시간초과가 나기 때문에 당연히 시간초과가 난다.  먼저 주목한 부분은 "정해진 범위에 일정한 값을 더한다." 는 것을 주목했다. 그리고 그 정해진 범위의 합을 구해야하는 문제이다. 그래서 누적합을 시도해보았다.  예제인[2, 3, -6, 1, 3, -1, 2, 4] 이라고 해보자  23-613-1241부터2-3-6..
[프로그래머스SQL] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 https://school.programmers.co.kr/learn/courses/30/lessons/164671 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr LEFT 조인을 쓴 사람도 있었고 ORDER BY 후 LIMIT한 사람도 있었다. 난 여기서 서브쿼리를 두번 사용해보았다. 먼저 MAX VIEWS로 SELECT 하여 IDX를 구했고 구한 IDX를 포함하는 파일을 구해냈다.  CONCAT 함수를 잘 사용하는 것이 중요한 문제였다. -- 코드를 입력하세요SELECT CONCAT("/home/grep/src/", BOARD_ID, ..
[프로그래머스LV3] 파괴되지 않은 건물 https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 누적합은 현재 배열에서 각 인덱스별로 누적된 합들을 간편하게 계산하고 사용할 수 있는 알고리즘이다.  그러나 이것을 응용하면 범위의 빈도수도 파악이 가능하다. 무슨말이냐하면 만약 1~10까지 숫자가 존재한다고 할 때 1~4, 2~5 두개가 주어진다고 하자. 그렇다면 1 -> 12 -> 23 -> 24 -> 25 -> 1 번 씩 범위에 포함된 것을 알 수 있다. 이것을 일일히 확인하면 첫번째 1~4가 ..