문제
https://www.acmicpc.net/problem/2592
풀이
처음에는 배열 두 개를 이용해 하나는 입력된 숫자를, 다른 하나는 해당 숫자가 입력된 횟수를 저장하며 풀 수도 있겠다고 생각을 했다.
key-value 형태인 것 같아 map을 이용해 풀어보았다.
map은 처음이라 사용방법을 구글에 검색해 풀었다.
// 선언
map<int, int> numList;
// insert #1
numList.insert({1, 2});
// insert #2
numList[1]++;
value가 하나씩 늘어나기 때문에, numList[key]++ 을 이용해 풀었다.
key와 value가 모두 int라서 푸는동안 약간 헷갈리기도 했다.
for(auto num : numList)를 이용해 처음에 맞게 풀었다가, 결과가 자꾸 이상하게 나와서 엉뚱하게
for(auto num = numList.begin(); num != numList.end(); num++)를 바꿔봤다.
알고보니 value 비교 후 max_value를 바꿔주지 않아서 그런 거였다.
소스코드
#include <iostream>
#include <map>
using namespace std;
int main()
{
int num_key;
int max_key=0;
int max_value=0;
int sum=0;
map<int, int> numList; // key, value
for(int i=0; i<10; i++)
{
cin >> num_key;
sum += num_key;
numList[num_key]++; // num_key가 없으면 삽입 후 value 1, 있으면 value +1
}
for(auto num = numList.begin(); num != numList.end(); num++)
{
if(int(num->second) > max_value){
max_value = num->second;
max_key = num->first;
}
}
cout << sum/10 << endl;
cout << max_key << endl;
return 0;
}
발전
처음 써보는 STL을 사용해 풀어서 뿌듯하다.
하나씩 사용해보면서 익숙해지자!
'Problem Solving' 카테고리의 다른 글
[백준/BOJ] 1037. 약수 (C++) (0) | 2024.05.29 |
---|---|
[백준/BO] 2822. NAJBOLJIH 5 (C++) (0) | 2024.05.29 |
[백준/BOJ] 1292. 쉽게 푸는 문제 (C++) (0) | 2024.05.22 |
[백준/BOJ] 10162. 전자레인지 (C++) (0) | 2024.05.14 |
[백준/BOJ] 5063. Nasty Hacks (C++) (0) | 2024.05.14 |