Skip to content

Commit b38d540

Browse files
authored
Merge pull request #434 from AlgorithmWithGod/LiiNi-coder
[20250710] BOJ / G4 / 중복 제거 / 이인희
2 parents 7363870 + fd7c320 commit b38d540

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

LiiNi-coder/202507/.gitkeep

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# 첫풀이 (hashSet이용)
2+
## 코드
3+
```java
4+
import java.io.BufferedReader;
5+
import java.io.BufferedWriter;
6+
import java.io.IOException;
7+
import java.io.InputStreamReader;
8+
import java.io.OutputStreamWriter;
9+
import java.util.HashSet;
10+
import java.util.StringTokenizer;
11+
12+
public class Main {
13+
private static BufferedReader br;
14+
private static StringTokenizer st;
15+
private static BufferedWriter bw;
16+
17+
public static void main(String[] args) throws IOException {
18+
br = new BufferedReader(new InputStreamReader(System.in));
19+
bw = new BufferedWriter(new OutputStreamWriter(System.out));
20+
String line = br.readLine();
21+
st = new StringTokenizer(line);
22+
23+
var sh = new HashSet<Integer>();
24+
while(st.hasMoreElements()){
25+
int ni = Integer.parseInt(st.nextToken());
26+
if(!sh.contains(ni)) {
27+
28+
bw.write(ni + " ");
29+
sh.add(ni);
30+
}
31+
}
32+
33+
34+
bw.flush();
35+
br.close();
36+
bw.close();
37+
}
38+
}
39+
```
40+
## 결과
41+
맞았습니다!! 396560KB 2260ms Java 11
42+
# 두번째 풀이(상태값bit집합이용)
43+
## 코드
44+
```java
45+
import java.io.BufferedReader;
46+
import java.io.BufferedWriter;
47+
import java.io.IOException;
48+
import java.io.InputStreamReader;
49+
import java.io.OutputStreamWriter;
50+
import java.util.HashSet;
51+
import java.util.StringTokenizer;
52+
53+
public class Main {
54+
private static BufferedReader br;
55+
private static StringTokenizer st;
56+
private static BufferedWriter bw;
57+
58+
public static void main(String[] args) throws IOException {
59+
br = new BufferedReader(new InputStreamReader(System.in));
60+
bw = new BufferedWriter(new OutputStreamWriter(System.out));
61+
String line = br.readLine();
62+
st = new StringTokenizer(line);
63+
64+
// 2^25개의 숫자가 등장하였는지 여부를 저장하는데에, int하나는 32개의 숫자를 검사 가능하니, 2^25 / 32 하여서 2^20개의 int필요
65+
int[] isAppeardNumber = new int[1<<20];
66+
67+
while(st.hasMoreElements()){
68+
int ni = Integer.parseInt(st.nextToken());
69+
// isAppeardNumber 에 해당 숫자가 존재하면 == isAppeardNumber의 해당 bit가 1이라면
70+
int byte_index = ni/32;
71+
int bit_index = ni%32;
72+
if((isAppeardNumber[byte_index] & (1 << (bit_index))) == 0) {
73+
bw.write(ni + " ");
74+
// isAppeardNumber에 반영
75+
isAppeardNumber[byte_index] |= (1 << (bit_index));
76+
}
77+
}
78+
79+
80+
bw.flush();
81+
br.close();
82+
bw.close();
83+
}
84+
}
85+
```
86+
## 결과
87+
맞았습니다!! 332500KB 1244ms Java 11

0 commit comments

Comments
 (0)