https://www.codetree.ai/missions/8/problems/lowest-points/description
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
코드:
#include <bits/stdc++.h>
#include <unordered_map>
using namespace std;
int n;
unordered_map<int, int> hMap;
vector<int> xArr;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
long long sum = 0;
while (n--) {
int x, y;
cin >> x >> y;
// x가 이미 존재하는 경우
if (hMap.find(x) == hMap.end()) {
hMap[x] = y;
xArr.push_back(x);
}
else {
// 있는 경우 y가 더 작다면 갱신
if (hMap[x] > y) {
hMap[x] = y;
}
}
}
// 모든 x를 순회하며 y값을 더함
for (int i = 0; i < xArr.size(); i++) {
sum += hMap[xArr[i]];
}
cout << sum;
}
n을 입력받아 n번 만큼 각각 x,y 좌표값을 입력 받습니다. 이때 x값들은 나중에 y값을 찾을 때 사용해야
하므로 vector 배열에 저장해주도록 합니다.
만약 입력받은 x의 값이 이미 HashMap에 존재할 경우 지금 입력받은 y의 값과 비교하여
더 작다면 value값을 갱신해주도록 합니다.
모든 x의 좌표를 살펴보면서 y의 값을 모두 더해 출력하도록 합니다.
이때 y의 값들의 합이 매우 크게 될 수 있으므로 sum의 자료형은 long long으로 설정해야 합니다!
'C++ > 코드트리 챌린지' 카테고리의 다른 글
[코드트리 챌린지] 6주차 Two Pointer - Two Pointer / 겹치는 숫자가 없는 최대 구간 (0) | 2023.10.15 |
---|---|
[코드트리 챌린지] 6주차 Two Pointer - Two Pointer / 가장 짧은 부분합 (0) | 2023.10.14 |
[코드트리 챌린지] 5주차 HashMap - HashMap / 대응되는 수와 문자 (0) | 2023.10.09 |
[코드트리 챌린지] 5주차 HashMap - HashMap / 가장 많은 데이터 (0) | 2023.10.09 |
[코드트리 챌린지] 5주차 HashMap - HashMap / 숫자 등장 횟수 (2) | 2023.10.09 |