-
[Programmers][C++]체육복Algorithm 2022. 8. 19. 13:48
https://school.programmers.co.kr/learn/courses/30/lessons/42862
lost와 reserve를 문자열로 배열을 받고 그것을 vector에 push 해줘야 한다.
문자열을 받아서 숫자인지 확인하는 방법
if (lost_arr[i] != ',') { lost.push_back(lost_arr[i]); }
여분이 있는 학생한테 옷을 빌리면 그 학생은 더 이상 옷을 빌려줄 수 없으므로 여분이 있는 학생에서 제외해야한다.
erase(remove(v.begin(),v.end(),lost[i]),v.end)
for문을 이용해 학생들을 한명한명 체크해줘야한다.
맨처음에 풀고 테스트 케이스 13,14번이 오류가 났는데, vector를 sort 해줘야 한다는 힌트를 발견했다.
정답 코드
#include <string> #include <vector> #include <iostream> #include <algorithm> using namespace std; int solution(int n, vector<int> lost, vector<int> reserve) { int answer = 0; for (int j = 0; j < lost.size(); j++){ if (find(reserve.begin(), reserve.end(), lost[j]) != reserve.end()) { reserve.erase(remove(reserve.begin(), reserve.end(), lost[j]), reserve.end()); lost.erase(remove(lost.begin(), lost.end(), lost[j]), lost.end()); } } sort(begin(lost), end(lost)); sort(begin(reserve), end(reserve)); answer = n - lost.size(); for (int i = 0; i < lost.size(); i++) { if (find(reserve.begin(), reserve.end(), lost[i] - 1) != reserve.end()) { reserve.erase(remove(reserve.begin(), reserve.end(), lost[i] - 1), reserve.end()); answer++; } else if (find(reserve.begin(), reserve.end(), lost[i] + 1) != reserve.end()) { reserve.erase(remove(reserve.begin(), reserve.end(), lost[i] + 1), reserve.end()); answer++; }else if (find(reserve.begin(), reserve.end(), lost[i]) != reserve.end()) { reserve.erase(remove(reserve.begin(), reserve.end(), lost[i]), reserve.end()); answer++; } } return answer; } int main() { int n; cin >> n; string lost_arr; string reserve_arr; vector<int> lost; vector<int> reserve; cin >> lost_arr; cin >> reserve_arr; for (int i = 1; i < lost_arr.length() - 1; i++) { if (lost_arr[i] != ' ' && lost_arr[i] != ',') { lost.push_back(lost_arr[i]); } } for (int k = 1; k < reserve_arr.length() - 1; k++) { if (reserve_arr[k] != ' ' && reserve_arr[k] != ',') { reserve.push_back(reserve_arr[k]); } } cout << solution(n, lost, reserve); return 0; }
'Algorithm' 카테고리의 다른 글
[Algorithm(C++)] 다이나믹 프로그래밍, 배낭 문제 (백준 12865) (0) 2023.01.15 [동적 계획법 : 다이나믹 프로그래밍] BOJ 9095 1,2,3 더하기 (0) 2023.01.08 [BOJ][C++] 2473 새 용액 (0) 2022.07.11 [BOJ][C++]9019 DSLR (0) 2022.07.11 [BOJ] [C++] AC (0) 2022.07.11