문제 : boj25192
'ENTER'가 나온 후 새로 나온 String의 수를 세면 된다. 이 때, ENTER가 나오면 '새로 나온'이 리셋된다고 생각하면 된다.
즉,
ENTER
A
ENTER
A
라면 A는 중복이지만 ENTER일 때 초기화됬으므로 2가 답이 된다.
반면에
ENTER
A
A
라면 A가 중복되므로 1이 답이 된다.
따라서 필요한건 빠른 시간 내에 String이 중복되었는지 확인할 수 있는 자료구조 혹은 알고리즘이다. HashSet이 딱이므로 HashSet을 사용해서 짜주면 된다.
코드 : github
...
private void solution() throws Exception {
int n = nextInt();
int cnt = 0;
HashSet<String> hs = new HashSet<>();
while (n-->0) {
String cur = nextLine();
if (cur.equals("ENTER")) {
hs = new HashSet<>();
continue;
}
if (!hs.contains(cur)) {
hs.add(cur);
cnt++;
}
}
System.out.println(cnt);
}
...
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 25194 - 결전의 금요일 (boj java) (4) | 2022.05.16 |
---|---|
[자바] 백준 25193 - 곰곰이의 식단 관리 (boj java) (0) | 2022.05.16 |
[자바] 백준 25191 - 치킨댄스를 추는 곰곰이를 본 임스 (boj java) (0) | 2022.05.16 |
[자바] 백준 14426 - 접두사 찾기 (boj java) (0) | 2022.05.16 |
[자바] 백준 24155 - 得点 (Score) (boj java) (0) | 2022.05.15 |
댓글