새소식

💻 Computer/🐘 Algorithm

11652 - c++

  • -

요약

카드 N장을 가지고 있다.가장 많이 가지고 있는 카드의 쓰여 있는 숫자를 출력 하자


CODE

#include <bits/stdc++.h>

using namespace std;
void init(){
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
}

int n;
long long arr[100'001];

int main()
{
  init();
  cin >> n;
  for(int i =0; i < n; ++i)cin >> arr[i];
  sort(arr, arr+n);
  long long  mxval = -(1ll << 62)-1;
  int mxcnt = 0;
  int cnt = 1;
  // 1 1 1 2 2
  for(int i =1; i <n; ++i){
    if(arr[i-1] == arr[i])cnt++;
    else {
      if(cnt > mxcnt){
        mxcnt = cnt;
        mxval = arr[i-1];
      }
      cnt = 1;
    }
  }
  if(cnt > mxcnt) mxval = arr[n-1];
  cout << mxval;
  return 0;
}

바로 코드 부터 쓴 이유는 답을 봤기 때문이다.

정렬을 하면 배열의 요소에 특징들이 생긴다.

1.같은 수는 붙어 있다.

2. 수가 오름차순/ 내림차순이 된다.

 

위 특징을 잘 조합해서 사용 하여 문제들을 풀 수 있다.


얻어가야 할 것 들

위에서 말한 것 처럼 배열의 특성들을 생각 할 수 있어야 한다.

1. 같은 수는 붙어 있다.

2. 오름차순 / 내림차순 정렬 되어 있다.

3. (1ll << 62)형변환을 해줘야 한다는 것

'💻 Computer > 🐘 Algorithm' 카테고리의 다른 글

14923 - c++  (0) 2023.06.01
10825 - c++  (0) 2023.06.01
14502 - c++  (0) 2023.05.31
13460 - c++  (0) 2023.05.31
3190 - c++  (0) 2023.05.30
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.