코딩테스트 준비 69

[프로그래머스 LV2] - 피로도(트리) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 백트래킹 재귀함수를 이용해서 풀었다. 코드 #include #include #include using namespace std; int back_tracking(int k, vector dungeons) { int answer = 100; int n = dungeons.size(); //던전을 도는 경우의 수 최대 8! bool check_leaf = true; if (!dungeo..

[프로그래머스 LV2] - 소수 찾기(완전탐색) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 오래걸린 문제였다. 생각보다 어려워서 헤멨다. 푼 방법은 다음과 같다. 1. numbers 배열을 통해 나올 수 있는 가장 큰 숫자를 찾는다. (find_max) 2. 그 숫자까지 수 중 소수를 찾는다.(isprime) 3. 그 소수에 있는 숫자 하나하나 numbers에 있는 숫자에 모자라지 않고 포함되면 합격(check_possible) 코드 #include #include #in..

[프로그래머스 LV3] - 이중우선순위큐(priority queue) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 sort함수의 시간 복잡도는 nlog(n)으로 알고 있다. 그러면 priority_queue만드는 거랑 넣을 때마다 sort()를 호출하는 거랑 시간복잡도는 비슷하다. sort를 사용해서 deque도 정렬할 수가 있었다.(정말 편리하다) 함수의 리턴타입이 vector였는데, return {0,0}; 이 가능했다. vector도 {}로 초기화할 수 있는 걸 알았다. 코드 #includ..

[프로그래머스 LV3] - 디스크 컨트롤러(minheap) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42627# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 jobs를 요청시간에 맞춰 정렬. 정렬된 jobs를 바탕으로, 하나씩 minheap에 넣을 건데, 이 때, time을 계산해야 한다. time이 jobs[idx][0]보다 작고 min_heap이 비어있는 경우, 이 때는 요청이 존재하지 않는 시간을 뜻한다. 그렇기 때문에, time = jobs[idx][0]으로 time 값을 변경해준다. 변경해주었다면, 이제 jobs[idx]를 m..

[프로그래머스 LV2] - 더 맵게(minheap) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 기존 vector를 이용해 minheap을 만드는 방법을 배웠다. 기존 vector의 size()가 1인 경우를 고려하지 못해서 계속 실패했다. 코드 #include #include #include #include using namespace std; int solution(vector scoville, int K) { int answer = 0; // 스코빌 지수를 오름차순으로 정..

[프로그래머스 LV4] - 자동차 대여 기록 별 대여 금액 구하기(string, date) SQL(how to use 'with clause' )

문제 https://school.programmers.co.kr/learn/courses/30/lessons/151141 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 세 테이블을 한 번에 join 시킨 후 해결하려고 했지만, 실패했다. 특히, 대여기간 별로 할인율을 다르게 적용하는 부분이 어려웠다. case문을 사용해야 할 거 같은데, 어디다가 위치시켜야 할 지 감이 오지 않았다. 그래서 다른 사람 답안을 참고했다. with를 써서 해결한 것을 볼 수 있었다. rental_date_per_history에서 각 기록별 rental_date를 가져..

[프로그래머스 LV3] - 조건에 맞는 사용자 정보 조회하기(string, date) SQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/164670 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 concat과, left, right, substr, coalesce 등의 문자열 조작함수를 활용한다. 코드 -- 코드를 입력하세요 SELECT u.user_Id, u.nickname, concat(u.city,' ', u.street_address1,' ', coalesce(u.street_address2, '')) as 전체주소, concat( left(u.tlno, 3), '..

[프로그래머스 LV2] - 주식가격 c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 스택으로 구현하려고 생각해봤는데, 도저히 방법이 떠오르지 않아서 GPT에게 물어봤다. stack에다가 원소를 넣는 방법만 생각했던 게 패인이었다. stack에 index를 넣는 방법을 사용하면, 그 인덱스를 가지고 price배열에도 접근할 수 있고, answer배열에 그 인덱스에 맞는 위치에 원하는 값을 넣을 수 있다. 코드 #include #include using namespac..

[프로그래머스 LV5] - 상품을 구매한 회원 비율 구하기(join) SQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/131534 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 LV5라고 적혀있어서 쫄았는데, 풀만했다. 코드 -- 코드를 입력하세요 SELECT year(sales_date) as year, month(sales_date) as month, count(distinct user_id) as purchased_users, round(count(distinct user_id) / (select count(distinct user_id) from ..

[프로그래머스 LV4] - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기(join) SQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/157339#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 복잡한 문제였다. 여태 푼 sql문제 중 가장 오래걸렸다. 처음 접근 할 때, natural join을 이용해서 풀려고 해봤는데, 잘 안 됐다. 또 discount_rate이 문자열 데이터인 줄 착각해서 좀 헤메기도 했다. 문제를 다시보니 정수 데이터였다. 다음부턴 문제를 잘 봐야겠다. 그래서 다른 사람 풀이를 참고했다. from 문에서 join하기 전에 subquery를 ..