풀이
입력받은 N개의 수들에 대해 중복없이 입력 받은대로 수들을 출력해주어야 한다.
이미 입력받은 수인지 확인하는 과정을 단순히 반복문을 돌며 확인한다면 시간초과가 발생한다.
때문에 O(1)만에 이미 입력받은 수 인지 아닌지 여부를 판단해주어야 한다.
입력될 수 있는 수의 범위(2^25 - 1)만큼 배열을 선언해주어 입력 여부를 0과 1로 표현한다면 빠른 시간안에 이미 입력받은 수인지 아닌지 판별이 가능하다.
단, int형 배열을 선언한다면, 메모리 제한에 걸릴 것 이다.
때문에 BitSet을 이용해 수의 범위만큼 배열을 선언해주면서 메모리 제한을 넘지않도록 하자.
입력을 받으며 이미 입력받은 수인지 확인하고, 아니라면 입력받은수로 표시를 하고 결과 버퍼에 저장해주자
java 15는 메모리 제한 예외 대상에서 빠졌지만 이를 보지 못한 필자는 메모리 초과 판정을 받았다.
java 11로 제출했다.
소스코드
출처
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 17352] 여러분의 다리가 되어 드리겠습니다! [Java] (0) | 2023.06.29 |
---|---|
[백준 1717] 집합의 표현 [Java] (0) | 2023.06.28 |
[백준 28235] 코드마스터 2023 [Python] (0) | 2023.06.25 |
[백준 28270] Marked-Numbered [Python] (0) | 2023.06.25 |
[백준 4344] 평균은 넘겠지 [C] (0) | 2023.06.24 |