From bbddf310688ee8fcdc95edcbc4700c91508a41ae Mon Sep 17 00:00:00 2001 From: Jinyeong Seol Date: Thu, 10 Jul 2025 13:50:23 +0900 Subject: [PATCH 1/2] Create .gitkeep --- LiiNi-coder/202507/.gitkeep | 1 + 1 file changed, 1 insertion(+) create mode 100644 LiiNi-coder/202507/.gitkeep diff --git a/LiiNi-coder/202507/.gitkeep b/LiiNi-coder/202507/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/LiiNi-coder/202507/.gitkeep @@ -0,0 +1 @@ + From fd7c320805e1f3f6d9bd3910429adeec436279f5 Mon Sep 17 00:00:00 2001 From: LiiNi-coder <97495437+LiiNi-coder@users.noreply.github.com> Date: Thu, 10 Jul 2025 23:43:33 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[20250710]=20BOJ=20/=20G4=20/=20=EC=A4=91?= =?UTF-8?q?=EB=B3=B5=20=EC=A0=9C=EA=B1=B0=20/=20=EC=9D=B4=EC=9D=B8?= =?UTF-8?q?=ED=9D=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\353\263\265\354\240\234\352\261\260.md" | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 "LiiNi-coder/202507/10 BOJ \354\244\221\353\263\265\354\240\234\352\261\260.md" diff --git "a/LiiNi-coder/202507/10 BOJ \354\244\221\353\263\265\354\240\234\352\261\260.md" "b/LiiNi-coder/202507/10 BOJ \354\244\221\353\263\265\354\240\234\352\261\260.md" new file mode 100644 index 00000000..d4fc8ea1 --- /dev/null +++ "b/LiiNi-coder/202507/10 BOJ \354\244\221\353\263\265\354\240\234\352\261\260.md" @@ -0,0 +1,87 @@ +# 첫풀이 (hashSet이용) +## 코드 +```java +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.util.HashSet; +import java.util.StringTokenizer; + +public class Main { + private static BufferedReader br; + private static StringTokenizer st; + private static BufferedWriter bw; + + public static void main(String[] args) throws IOException { + br = new BufferedReader(new InputStreamReader(System.in)); + bw = new BufferedWriter(new OutputStreamWriter(System.out)); + String line = br.readLine(); + st = new StringTokenizer(line); + + var sh = new HashSet(); + while(st.hasMoreElements()){ + int ni = Integer.parseInt(st.nextToken()); + if(!sh.contains(ni)) { + + bw.write(ni + " "); + sh.add(ni); + } + } + + + bw.flush(); + br.close(); + bw.close(); + } +} +``` +## 결과 +맞았습니다!! 396560KB 2260ms Java 11 +# 두번째 풀이(상태값bit집합이용) +## 코드 +```java +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.util.HashSet; +import java.util.StringTokenizer; + +public class Main { + private static BufferedReader br; + private static StringTokenizer st; + private static BufferedWriter bw; + + public static void main(String[] args) throws IOException { + br = new BufferedReader(new InputStreamReader(System.in)); + bw = new BufferedWriter(new OutputStreamWriter(System.out)); + String line = br.readLine(); + st = new StringTokenizer(line); + + // 2^25개의 숫자가 등장하였는지 여부를 저장하는데에, int하나는 32개의 숫자를 검사 가능하니, 2^25 / 32 하여서 2^20개의 int필요 + int[] isAppeardNumber = new int[1<<20]; + + while(st.hasMoreElements()){ + int ni = Integer.parseInt(st.nextToken()); + // isAppeardNumber 에 해당 숫자가 존재하면 == isAppeardNumber의 해당 bit가 1이라면 + int byte_index = ni/32; + int bit_index = ni%32; + if((isAppeardNumber[byte_index] & (1 << (bit_index))) == 0) { + bw.write(ni + " "); + // isAppeardNumber에 반영 + isAppeardNumber[byte_index] |= (1 << (bit_index)); + } + } + + + bw.flush(); + br.close(); + bw.close(); + } +} +``` +## 결과 +맞았습니다!! 332500KB 1244ms Java 11