๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Java

[Java] BitSet

BitSet

  • BitSet์€ ๋น„ํŠธ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฑํ„ฐ์ด๊ณ , ๊ฐ ๋น„ํŠธ๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๊ฐœ๋ณ„์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ์—์„œ boolean ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜๋‹ค. 
  • ๋™์ ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ํ™•์žฅํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ์„œ ๋” ๋งŽ์€ ๋น„ํŠธ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ž๋™์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•œ๋‹ค.
  • ์ดˆ๊ธฐ๊ฐ’์€ false.
  • ๋ฉ”์†Œ๋“œ๋“ค์€ ์—ฌ๊ธฐ์„œ: https://docs.oracle.com/javase/8/docs/api/java/util/BitSet.html

BitSet vs. boolean ๋ฐฐ์—ด

  • boolean ๋ฐฐ์—ด์˜ ๊ฐ boolean ๊ฐ’์€ 1๋น„ํŠธ๊ฐ€ ์•„๋‹Œ 1๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์˜ ์ตœ์†Œ ๋‹จ์œ„๊ฐ€ ๋ฐ”์ดํŠธ์ด๊ธฐ ๋•Œ๋ฌธ.
  • BitSet ํด๋ž˜์Šค๋Š” ๋น„ํŠธ ๋‹จ์œ„์˜ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜์—ฌ, ๋น„ํŠธ ๋ ˆ๋ฒจ์—์„œ ๋น ๋ฅธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์ด๋Š” boolean ๋ฐฐ์—ด๋กœ๋Š” ์ง์ ‘์ ์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.  

    ํŠน์ • API์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์ œ์™ธํ•˜๋ฉด ํšจ์œจ์„ฑ์œผ๋กœ๋Š” BitSet์ด ๋” ๋›ฐ์–ด๋‚˜ ๋ณด์ธ๋‹ค. ์—ด์‹ฌํžˆ ์ฐพ์•„๋ณด๋‹ˆ boolean ๋ฐฐ์—ด์˜ ์žฅ์ ์„ "์ง๊ด€์ ์ด๊ณ  ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๋‹ค"๋ผ๊ณ  ํ•˜๋Š” ๊ธ€๋“ค์ด ๋งŽ์ง€๋งŒ, BitSet๋„ ์ด๋ฏธ ๊ตฌํ˜„๋œ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ–๋‹ค ์“ฐ๋Š” ๊ฒƒ์ด๋ผ ํฌ๊ฒŒ ์™€๋‹ฟ์ง€๋Š” ์•Š์•˜๋‹ค. (๊ฒฐ๋ก ์€ BitSet ์งฑ์งฑ๋งจ?)

์ ์šฉ ๋ฌธ์ œ

 

 

์ด ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋นก๋นกํ•œ ๊ฒฝ์šฐ BitSet์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋”๋ณด๊ธฐ
import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st = new StringTokenizer(br.readLine());
		BitSet bset = new BitSet(1 << 25);

		while (st.hasMoreTokens()) {
			int A = Integer.parseInt(st.nextToken());
			if (!bset.get(A)) {
				sb.append(A).append(' ');
				bset.set(A);
			}
		}

		System.out.println(sb);
		br.close();
	}
}