본문 바로가기

프로그래머스

(21)
[프로그래머스] (C++) 섬 연결하기 문제 링크 접근 방식 우선 costs를 정렬한다. 가장 적은 cost 다리부터 건설 한다. 연결되는 섬은 연결되었다고 기록 그 다음 다리를 건설 한다. 다리가 이미 연결된 두 섬을 연결한다면 PASS 한 섬이라도 새로 연결된다면 다리 건설 새로 연결되는 섬은 연결되었다고 기록 모든 섬이 한번씩이라도 연결됬으면 연결 완료 소스 코드 (1차) #include #include #include using namespace std; int solution(int n, vector costs) { int answer{0}; bool* boolList{new bool[n]()}; sort(costs.begin(), costs.end(), [](const vector & a, const vector & b) { ret..
[프로그래머스] (C++) 야근지수 문제 링크 코딩테스트 연습 - 야근 지수 | 프로그래머스 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다.Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리턴하는 함수 solution을 완성해주세요. 제한 사항 works는 길이 programmers.co.kr 생각해볼만한 점 가장 큰 works의 값부터 1 씩 줄여가면 되지 않을까? 결국 가장 작은 값 (최소화한 값) 이란 제곱하는 베이스가 평균적으로 가장 작게 나오는 ..
[프로그래머스] (C++) 이중우선순위큐 문제 링크 힌트 우선순위큐는 minHeap 또는 maxHeap 을 사용한다 이중우선순위큐는 minHeap과 maxHeap을 둘 다 사용하는 방법을 생각해보자 소스 코드 (1차 시도) #include #include #include #include using namespace std; vector solution(vector operations) { vector answer{0, 0}; priority_queue maxHeap; priority_queue minHeap; for (auto iter = operations.begin(); iter != operations.end(); iter++) { char action = iter->at(0); int num = stoi(iter->substr(2, st..
[프로그래머스] (C++) 방문길이 문제 링크 힌트 이미 간 곳에 대한 정보를 어떻게 저장해야 갈 수 있는 곳에 대한 정보를 쉽게 얻을 수 있을까? 어디에서 어느 방향으로 갔는지를 저장하면 되지 않을까? 소스 코드 // [프로그래머스] 방문 길이 #include #include #include #include #include int solution (std::string dirs) { int answer{0}; std::pair lastPos, nextPos; std::vector U, D, L, R; lastPos.first = 0; lastPos.second = 0; for (int i = 0; i < dirs.length(); i++) { if (dirs[i] == 'U') { if (lastPos.second == 5) contin..
[프로그래머스] (C++) 순위 문제 링크 코딩테스트 연습 - 순위 | 프로그래머스 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 힌트 어느 노드를 통해서 다른 노드에 다달를 수 있는데 그때 사용하는 것이 플로이드-워셜 알고리즘이다. 자신에게 올 수 있는 노드의 수와 자신이 갈 수 있는 노드의 수의 합이 N-1 일 때 확실히 자신의 순위를 알 수 있다. 소스코드 #include #include #include using namespace std; int solution(int n, vector results) { int answer{0}; // 플로이드를 써서 다른 vertex를 거쳐서라도 갈 수 있으면 edge 값 update // 나보다 큰 수 + 나보다 작은 수 =..
[프로그래머스] (C++) 매칭 점수 문제 링크 힌트 머리 (HEADER)에서 추출 해야 할 값 그리고 몸 (BODY)에서 추출 해야 할 값을 나누어 보자. 소스 코드 (1차 시도) #include #include #include #include #include #include #include using namespace std; int solution(string word, vector pages) { int answer = 0; int pageNum = pages.size(); vector pageNames; vector matchingScores; vector linkScores; vector stdScores; vector linkNums; vector linkScoresToOther; vector linkedPagesList; //..
[프로그래머스] (C++) 숫자 게임 문제 링크 힌트 정렬을 이용하자. 소스 코드 (1차 시도) // [프로그래머스] 숫자 게임 #include #include #include #include using namespace std; int solution(vector A, vector B) { int answer = 0; std::sort(A.begin(), A.end()); std::sort(B.begin(), B.end()); vector::iterator B_iter = B.begin(); for (vector::iterator iter = A.begin(); iter != A.end(); iter++) { while (B_iter != B.end()) { if (*B_iter >= *iter) { answer++; B_iter++; b..
[프로그래머스] (C++) 구명 보트 문제 링크 코딩테스트 연습 - 구명보트 | 프로그래머스 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모 programmers.co.kr 힌트 최대 2명 (한 명을 임의로 택했을 때 다른 한 명은 누구를 태우면 가장 좋을까?) 소스 코드 (첫번째 시도) // [프로그래머스] 구명 보트 #include ..