코딩테스트 준비/프로그래머스 26

[프로그래머스 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; // 스코빌 지수를 오름차순으로 정..

[프로그래머스 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..

[프로그래머스 LV2] - 다리를 지나는 트럭(스택/큐) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42583# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 구현했는데, 정답률이 60퍼가 계속 나왔다. 결국 원인을 찾지 못해서, gemini의 도움을 받았다. 근데 gemini도 틀렸다. gemini코드를 수정하니 정답률 100%가 나왔다. 뭐가 달랐을까.. gemini코드가 좀 더 문제에서 얘기하는 구현과 일치했다. 아마 정답률이 60%였던 이유는 몇몇 테스트케이스에서 트럭이 빠져나가는 타이밍과 들어오는 타이밍이 맞지 않아서였던 거 같..

[프로그래머스] - 프로세스(스택/큐) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 문제를 보고, 더 쉽게 푸는 방법이 있나 고민 해봤지만, 이게 최선이었다. 문제에서 제시한 내용 그대로 풀었다. 코드 #include #include #include using namespace std; int solution(vector priorities, int location) { int answer = 0; deque q; for (int i=0;i

[프로그래머스] - H-index(정렬) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 간단히 풀리는 문제였다. 코드 #include #include #include using namespace std; int solution(vector citations) { int answer = 0; sort(citations.begin(), citations.end(), greater()); for (int i=0;i= i + 1) answer = i + 1; } return ..

[프로그래머스] - 가장 큰 수(정렬) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42746# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 lamda이용해서 정렬했다. 잘 안되서 chatGPT에게 물어봤다. 근데 string 끼리 A + B > B + A 이런 식으로 비교하면 된다고 알려줬다. string끼리 비교할 수 있는 지 몰랐고, A + B > B + A 아이디어가 좋았다. 처음 숫자가 0이 될 때 output이 0이 나와야하는데, 0000 이런 식으로 나와서 자꾸 실패가 떴다. 그래서 예외를 추가해줬다. 코드..