[프로그래머스 C++] 할인행사
[프로그래머스 C++] 할인행사
https://school.programmers.co.kr/learn/courses/30/lessons/131127/solution_groups?language=cpp
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해결전략
map
key를 찾아 value를 값을 빼주고 0이 되면 map의 요소(element)를 빼준다.
코드
#include <iostream> #include <vector> #include <map> using namespace std; int solution(vector<string> want, vector<int> number, vector<string> discount) { int answer = 0; map<string, int> need; // 원하는 물품 종류와 수를 담는 map for(int i=0; i<want.size(); i++){ need.insert(make_pair(want[i], number[i])); } for (int start = 0; start < discount.size(); start++){ for (int i = start; i < start + 10 && i < discount.size(); i++) { //i번째 discount 물품이 원하는 물품 리스트에 있는지 확인 map<string,int>::iterator it = need.find(discount[i]); if (it != need.end()) { it->second--; if (it->second == 0) // 해당 물품을 더 이상 살 필요 없다면 need.erase(it); // 물품 목록에서 없애준다. } //물품 목록이 모두 비워졌다면 문제 조건을 달성했다는 의미다. if(need.empty()){ answer++;//카운팅 해준다. break; } } //위에서 사용한 need를 비워주고 초기화해준다. need.clear(); for (int i = 0; i < want.size(); i++) { need.insert(make_pair(want[i], number[i])); } } return answer; }
map을 초기화 해주는 대신,
map을 처음에 두 개(need, temp)를 만들어준후 for문이 돌 때 다른 map을 사용하면 된다.
#include <vector> #include <map> using namespace std; int solution(vector<string> want, vector<int> number, vector<string> discount) { int answer = 0; map<string, int> need, temp; // 원하는 물품 종류와 수를 담는 map for(int i=0; i<want.size(); i++){ need.insert(make_pair(want[i], number[i])); } for (int start = 0; start < discount.size(); start++) { temp = need; //need와 똑같은 map을 사용하여 검사를 진행한다. for (int i = start; i < start + 10 && i < discount.size(); i++) { //i번째 discount 물품이 원하는 물품 리스트에 있는지 확인 map<string,int>::iterator it = temp.find(discount[i]); if (it != temp.end()) { it->second--; if (it->second == 0) // 해당 물품을 더 이상 살 필요 없다면 temp.erase(it); // 물품 목록에서 없애준다. } //물품 목록이 모두 비워졌다면 문제 조건을 달성했다는 의미다. if(temp.empty()){ answer++;//카운팅 해준다. break; } } } return answer; }
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 피보나치 수 (0) | 2023.09.12 |
---|---|
[프로그래머스 C++] [1차] 캐시 (0) | 2023.09.11 |
[프로그래머스 C++] H-Index (0) | 2023.09.08 |
[프로그래머스 C++] 괄호 회전하기 (0) | 2023.09.07 |
[프로그래머스 C++] 호텔 대실 (0) | 2023.09.06 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] 피보나치 수
[프로그래머스 C++] 피보나치 수
2023.09.12 -
[프로그래머스 C++] [1차] 캐시
[프로그래머스 C++] [1차] 캐시
2023.09.11 -
[프로그래머스 C++] H-Index
[프로그래머스 C++] H-Index
2023.09.08 -
[프로그래머스 C++] 괄호 회전하기
[프로그래머스 C++] 괄호 회전하기
2023.09.07
댓글을 사용할 수 없습니다.