프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 구명보트에 최대 2명만 탈 수 있다는 조건 덕분에 그리디를 잘 못 푸는 나도 빠르게 해결할 수 있었다. 구명보트 수를 줄이고 싶다면 최대한 2명씩 묶어서 탈출시켜야 한다. 무거운 사람을 최대한 가벼운 사람들과 매칭시키면 무거운 사람이 혼자 타서 탈출하는 경우를 줄일 수 있을 것이라 생각했다. 몸무게 오름차순으로 정렬한 후, 양 끝을 나타내는 인덱스(left, right)를 만들고 좁혀가며 보트의 수를 세자. 두 사람의 몸무게 합이 제한보다 크다면 무거운 사람이 혼자 타도록 하고 right만 감소시키자. 제한보..
프로그래머스

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 마지막의 '나머지 논문이 h번 이하 인용 되었다면'에서 정렬을 생각했다. 그럼 h번 이상 인용된 논문이 몇 편인지는 어떻게 구할까? 나는 lower_bound를 통해 구했다. citations.end() - lower_bound(citations.begin(), citations.end(), h)를 통해 h번 이상 인용된 논문의 수를 구할 수 있다. 코드 #include #include #include using namespace std; int solution(vector citations) { int an..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DFS로 하나의 네트워크에 속하는 컴퓨터를 모두 방문할 수 있으니, DFS를 수행한 횟수가 정답이 된다 코드 #include #include using namespace std; bool visited[201]; vector graph[201]; void dfs(int cur) { for (int next : graph[cur]) { if (visited[next]) { continue; } visited[next] = true; dfs(next); } } int solution(int n, vector co..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음엔 문제를 잘못 이해했었다;; 현재 처리하지 않고 남아 있는 프로세스들의 우선순위를 담을 우선순위 큐 하나만 있으면 해결가능했다. 1. 우선순위들을 모두 우선순위 큐에 넣는다. 2. 우선순위 큐가 비거나 찾으려는 프로세스가 처리되면 끝내도록 하고 while문을 돈다. 2-1. 인덱스를 하나씩 증가시키며 현재 프로세스의 우선순위가 우선순위 큐의 top과 같은지 비교한다. 2-2. 같다면 우선순위 큐에서 우선순위를 pop 하고, 정답에 1을 더해준다. (해당 인덱스가 찾고자 하는 프로세스의 인덱스라면 종료) ..