Search
Duplicate
📒

체육복

주차
문제번호
언어
C++
티어
Level 1
유형
그리디
nj_Blog
nj_상태
이해도
66%
풀이
사람
이해도 2
13 more properties

문제접근

여벌이 있는 학생의 양옆에 도난 당한 학생이 있는지 검색

놓쳤던 부분

정렬을 하지 않으면 규칙적인 탐색이 아니라 최대가 나올 수 없다
여벌이 있는 학생 중에 도난 당한 학생은 다른 학생들에게 빌려줄 수 없는 상황이기 때문에 미리 제거

코드

KB

ms

#include <string> #include <vector> #include <algorithm> using namespace std; int solution(int n, vector<int> lost, vector<int> reserve) { int answer = n - lost.size(); vector<int>::iterator pos; sort(lost.begin(), lost.end()); sort(reserve.begin(), reserve.end()); for (int i = 0; i < lost.size(); i++) { if ((pos = find(reserve.begin(), reserve.end(), lost[i])) != reserve.end()) { answer++; *pos = 0; lost[i] = -1; } } for (int i = 0; i < reserve.size(); i++) { if (reserve[i] != 0) { if ((pos = find(lost.begin(), lost.end(), reserve[i] - 1)) != lost.end()) { answer++; *pos = 0; } else if ((pos = find(lost.begin(), lost.end(), reserve[i] + 1)) != lost.end()) { answer++; *pos = 0; } } } return answer; }
C++
복사