728x90
๐๋ฌธ์ ๋งํฌ
๐จ๐ปํ์ด ๊ณผ์
์ฒ์์๋ ์ซ์๊ฐ ์ค๋ฆ์ฐจ์ ์์๋ก ์ ๋ค์ด์ค๋ ์ค ์๊ณ , ์ ๋ ฌ์ ํด์คฌ์๋๋ฐ ์ ๋ ฅ์ด ์ค๋ฆ์ฐจ์์ผ๋ก ๋ค์ด์ค๋ ๊ฒ ๊ฐ์ ํ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. <key, value> ์์ผ๋ก ์ ์ฅ๋๊ณ , ๊ฒ์์ ์ ๋ฆฌํ ์๋ฃ๊ตฌ์กฐ์ธ STL์ map ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์ต๋๋ค.
#include <vector>
#include <map>
using namespace std;
template<typename T>
map<T, T>* CountNumbers(const vector<T>& array)
{
map<T, T>* numbers = new map<T, T>();
for (auto number : array)
{
auto itFind = numbers->find(number);
if (itFind != numbers->end()) // ํด๋น ์ซ์๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ฉด ๊ฐ์++
{
itFind->second++;
continue;
}
numbers->insert(make_pair(number, 1)); // ํด๋น ์ซ์๊ฐ ์์ผ๋ฉด 1๊ฐ๋ก ๋ฐ์ดํฐ ๋ฑ๋ก
}
return numbers;
}
์ ํจ์๋ฅผ ๋ง๋ค์ด์คฌ๊ณ , ํด๋น ํจ์๋ฅผ ๋ฐํ์ผ๋ก ์ต๋น๊ฐ๊ณผ ์ค๋ณต ์ฌ๋ถ๋ฅผ ์ฒดํฌํ์์ต๋๋ค.
int solution(vector<int> array) {
map<int, int>* numbers = CountNumbers(array);
bool isduplicated = false;
int currentCount = 0;
int answer = 0;
for (const auto data : *numbers)
{
if (data.second > currentCount) {
answer = data.first;
currentCount = data.second;
isduplicated = false;
continue;
}
if (data.second == currentCount && !isduplicated) {
isduplicated = true;
}
}
if (isduplicated)
return -1;
return answer;
}
728x90
๋ฐ์ํ
'๐คAlgorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] Lv2. ๋ชจ์ ์ฌ์ | C++ (0) | 2023.06.04 |
---|---|
[Programmers] Lv2. ํธํ ๋์ค (0) | 2023.06.03 |
[Programmers] Lv2. ๋ฏธ๋ก ํ์ถ | C++ (1) | 2023.06.03 |
[Programmers] Lv2. ๋ฌด์ธ๋ ์ฌํ | C++ (0) | 2023.06.03 |
[Programmers] Lv0. ๊ตฌ์ฌ์ ๋๋๋ ๊ฒฝ์ฐ์ ์ | C++ (0) | 2023.02.08 |