백준

백준 11652 카드 c++

2024. 3. 27. 17:38

 

 

 

처음 작성한 코드는 다음과 같다.

입력받은 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