문제 링크입니다: https://www.acmicpc.net/problem/15719
http://jaimemin.tistory.com/498에서 사용한 기법을 그대로 사용하면 됩니다.
int형 변수는 32비트인 것을 이용하여 비트마스크를 적용하면 시간 내에 중복된 숫자를 찾을 수 있습니다!
#include <iostream>
using namespace std;
const int MAX = 10000000;
int N;
int arr[MAX];
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0); //cin의 속도를 극대화
cin >> N;
for (int i = 0; i < N; i++)
{
int temp;
cin >> temp;
//int형 변수는 32bit
if ((arr[temp / 32] & (1 << (temp % 32))))
{
cout << temp;
break;
}
arr[temp / 32] |= (1 << (temp % 32));
}
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 13699번 점화식 (0) | 2018.05.23 |
---|---|
백준 13698번 Hawk eyes (0) | 2018.05.23 |
백준 2482번 색상환 (4) | 2018.05.19 |
백준 1753번 최단경로 (4) | 2018.05.19 |
백준 14954번 Happy Number (2) | 2018.05.19 |