https://school.programmers.co.kr/learn/courses/30/lessons/131127
이번 문제는 해시(key-value) 문제였습니다.
📝 문제 풀이
1. 10일 연속으로 할인하는 제품과 수량을 담을 map 객체 생성 ⭐️
2. discount.size() - 9 만큼 for문을 돌면서 bool 타입의 변수로 회원가입을 할 수 있는지 체크
3. 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치한다면 answer++
4. 10일 중 첫째 날의 수량은 1 감소시키고 다음 날의 수량은 1 증가
👩🏻💻 C++ 코드
#include <string>
#include <vector>
#include <map>
using namespace std;
int solution(vector<string> want, vector<int> number, vector<string> discount) {
int answer = 0;
map<string, int> m;
for (int i=0; i<10; i++) {
m[discount[i]]++;
}
for (int i=0; i<discount.size()-9; i++) {
bool wantSignup = true;
for (int j=0; j<want.size(); j++) {
if (m[want[j]] != number[j]) {
wantSignup = false;
break;
}
}
if (wantSignup) {
answer++;
}
m[discount[i]]--;
if (i < discount.size()-10) m[discount[i+10]]++;
}
return answer;
}
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 등대 C++ (Lv.3) (0) | 2023.04.18 |
---|---|
[프로그래머스] 부대복귀 C++ (Lv.3) (0) | 2023.04.18 |
[프로그래머스] 귤 고르기 C++ (Lv.2) (0) | 2023.04.18 |
[프로그래머스] 연속된 부분 수열의 합 C++ (0) | 2023.04.14 |
[프로그래머스] 리코쳇 로봇 C++ (1) | 2023.04.14 |