본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 11652 카드

by 까망 하르방 2021. 2. 25.
반응형

출처: https://www.acmicpc.net/problem/11652

 Input 

5

1

2

1

2

1

 

 Output 

두 가지 방법으로 문제를 해결할 수 있습니다. (정렬, Hash)

정렬

{숫자, 나타난 횟수}를 한 쌍으로 데이터를 저장한 후 아래 두 기준으로 정렬합니다.

    ① 나타난 횟수가 많은 순

    ② 숫자가 작은 순

 

Hash

숫자(long long)를 key값으로 해서 나타난 횟수를 Value 값으로 저장합니다.

Hash를 순회하면서 가장 많이 나타난 횟수 중 가장 작은 수를 탐색합니다.

 

[해시] Hash란?  

 

[해시] Hash란?

Hash란? 원소가 저장되는 위치가 원소 값에 의해 결정되는 자료구조 - 평균 상수 시간에 삽입, 검색, 삭제가 가능하다. - 매우 빠른 응답을 요구하는 상황에 유용 (Hash는 최소(최대) 원소를 찾는 것

zoosso.tistory.com


// Hash를 이용한 풀이
#include <iostream>
#include <cstdio>
#include <map>
#include <limits.h>
 
using namespace std;
typedef long long LL;
 
map<LL, int> deck;
int N, maxVal = -1;
LL val;
 
void input() {
    scanf("%d", &N);
    for (int i = 0; i < N; i++){
        scanf("%lld", &val);
        deck[val]++;
    }
}
 
int main(){
    // freopen("input.txt", "r", stdin);
    input();
 
    for (auto it = deck.begin(); it != deck.end(); it++){
        // 나타난 횟수가 더 많은 경우만 갱신 (같은 경우는 작은 숫자가 우선시되므로 continue)
        if (it->second > maxVal){ 
            maxVal = it->second;
            val = it->first;
        }
    }
    printf("%lld\n", val);
}

 

반응형

'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 11404 플로이드  (0) 2021.02.25
[BOJ] 백준 12791 Starman  (0) 2021.02.25
[BOJ] 백준 2884 알람 시계  (0) 2021.02.24
[BOJ] 백준 3665 최종 순위  (0) 2021.02.24
[BOJ] 백준 2056 작업  (0) 2021.02.24

댓글