문제
https://www.acmicpc.net/problem/25192
풀이
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));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
Set<String> set = new HashSet<>();
int count = 0;
for(int i = 0; i < N; i++){
String input = br.readLine();
if(input.equals("ENTER")){
count += set.size();
set = new HashSet<>();
continue;
}
set.add(input);
}
count += set.size();
System.out.println(count);
}
}
기본적으로 중복을 제외해야되기 때문에 set자료구조를 사용한다. 또한 순서가 중요하지 않기에 성능이 가장 좋은 hashSet을 사용한다. ENTER문자열을 발견하게 되면 이전의 집합 크기를 더해주고, 초기화한다. 그렇지 않은 경우 집합에 추가한다.
최종적으로 집합의 크기를 한번 더해준다. 마지막에 ENTER가 들어가지 않기 때문에 마지막 사람에 대한 결과를 더해줘야 하기 때문이다.
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 16639번. 괄호 추가하기3(JAVA) (1) | 2024.09.05 |
---|---|
[백준]29791번. 에르다 노바와 오리진 스킬(JAVA) (0) | 2024.09.04 |
[백준]2583번. 영역 구하기(JAVA) (0) | 2024.05.11 |
[백준] 9095번. 1, 2, 3 더하기(JAVA) (0) | 2024.05.07 |
[백준] 1890번. 점프(JAVA) (0) | 2024.05.07 |