[BOJ] 11652번 : 카드
2024. 8. 29. 19:22ㆍAlgorithm
1. problem :
https://www.acmicpc.net/problem/11652
2. solution 1 :
#include <bits/stdc++.h>
using namespace std;
int n;
vector<long long> v; // number, cnt
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++) {
long long x;
cin >> x;
v.push_back(x);
}
sort(v.begin(), v.end());
int idx = 0;
int cnt = 0;
long long maxVal = -(1ll << 62);
int maxcnt = 0;
while (idx < n) {
while (idx == 0 || idx < n && v[idx] == v[idx - 1]) {
cnt++;
idx++;
}
if (maxcnt < cnt) {
maxcnt = cnt;
maxVal = v[idx-1];
}
cnt = 0;
cnt++;
idx++;
}
cout << maxVal << '\n';
}
이 코드는 100% 정확한 코드가 아니다. 왜냐하면, 마지막 숫자에대해서는 고려하지 않았기때문이다. 물론, 마지막 숫자가 1개라면 영향이 없기때문에 , 정답 처리가 되었다.
#include <bits/stdc++.h>
using namespace std;
int n;
vector<long long> v; // number, cnt
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++) {
long long x;
cin >> x;
v.push_back(x);
}
sort(v.begin(), v.end());
int idx = 0;
int cnt = 0;
long long maxVal = -(1ll << 62);
int maxcnt = 0;
while (idx < n) {
while (idx == 0 || idx < n && v[idx] == v[idx - 1]) {
cnt++;
idx++;
}
if (maxcnt < cnt) {
maxcnt = cnt;
maxVal = v[idx-1];
}
cnt = 0;
cnt++;
idx++;
}
if (cnt > maxcnt) maxVal = v[idx - 1];
cout << maxVal << '\n';
}
마지막줄처럼 처리를 해줘야한다.
3. solution 2 :
// Authored by : BaaaaaaaaaaarkingDog
// Co-authored by : -
// http://boj.kr/f3feaf22016f4c9687b84ab6be2f4389
#include <bits/stdc++.h>
using namespace std;
int n;
long long a[100005];
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for(int i = 0; i < n; i++)
cin >> a[i];
sort(a, a+n);
int cnt = 0;
long long mxval = -(1ll << 62) - 1; // 1을 long long으로 형변환하지 않고 1 << 62로 작성시 int overflow 발생
int mxcnt = 0;
for(int i = 0; i < n; i++){
if(i == 0 || a[i-1] == a[i]) cnt++; // i가 0인 경우 앞쪽 식이 true이기 때문에 a[i-1]을 참조하지 않음
else{
if(cnt > mxcnt){
mxcnt = cnt;
mxval = a[i-1];
}
cnt = 1;
}
}
if(cnt > mxcnt) mxval = a[n-1]; // 제일 마지막 수가 몇 번 등장했는지를 별도로 확인
cout << mxval;
}
source code 출처 : https://github.com/encrypted-def/basic-algo-lecture/blob/master/0x0F/solutions/11652.cpp
basic-algo-lecture/0x0F/solutions/11652.cpp at master · encrypted-def/basic-algo-lecture
바킹독의 실전 알고리즘 강의 자료. Contribute to encrypted-def/basic-algo-lecture development by creating an account on GitHub.
github.com
'Algorithm' 카테고리의 다른 글
| [BOJ] 5648번 : 역원소 정렬 (0) | 2024.08.30 |
|---|---|
| [BOJ] 1914번 : 하노이 탑 (0) | 2024.08.29 |
| [BOJ] 11651번 : 좌표 정렬하기 2 (0) | 2024.08.29 |
| [BOJ] 11650번 : 좌표 정렬하기 (0) | 2024.08.29 |
| [BOJ] 10814번 : 나이순 정렬 (1) | 2024.08.28 |