처음 작성한 코드는 다음과 같다.
입력받은 arr[i]를 인덱스로 가지는 count 배열에 count를 해서 해당 숫자가 몇 번 나왔는지 저장하도록 한다.
그 중 가장 많이 나온 answer값을 출력하는 형식으로 구성했다.
#include <iostream>
using namespace std;
int main(){
long long n;
cin >> n;
long long arr[100001];
long long count[] = {0, };
cin >> arr[0];
count[arr[0]]++;
long long answer = arr[0];
long long cnt_max = 1;
for(long long i=1; i<n; i++) {
cin >> arr[i];
count[arr[i]]++;
if(cnt_max < count[arr[i]]){
answer = arr[i];
cnt_max = count[arr[i]];
}
else if(cnt_max == count[arr[i]]){
if(answer > arr[i]){
answer = arr[i];
}
}
}
cout << num;
return 0;
}
하지만 컴파일 에러가 났다.
너무 어려운 방식말고 간단하게도 해결할 수 있었다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(){
int n;
cin >> n;
long long temp;
vector<long long> arr;
for(int i=0; i<n; i++) {
cin >> temp;
arr.push_back(temp);
}
sort(arr.begin(), arr.end());
long long cnt = 0;
long long max_cnt = 0;
long long answer_num = arr[0];
for(int i=1; i<n; i++){
if(arr[i] == arr[i-1]){
cnt++;
if(max_cnt < cnt){
max_cnt = cnt;
answer_num = arr[i];
}
}
else
cnt = 0;
}
cout << answer_num;
return 0;
}
'백준' 카테고리의 다른 글
백준 13300 방 배정 c++ (0) | 2024.03.28 |
---|---|
백준 1475 방 번호 c++ (0) | 2024.03.27 |
백준 3273 두 수의 합 c++ (0) | 2024.03.27 |
백준 7795 먹을 것인가 먹힐 것인가 c++ (0) | 2024.03.27 |
백준 14501 퇴사 c++ (0) | 2024.03.21 |