-
[Baekjoon] 11723번 집합 (Java)Java/Baekjoon 2022. 10. 2. 19:40
굉장히 쉬운 문제였는데,,, 시간초과가 나와서 당황한 문제였다..
알고리즘 분류에 비트마스킹이 써있었는데, 그게 뭔지 잘 모르겠어서,,,
HashSet으로 풀었다.
예제
26 add 1 add 2 check 1 check 2 check 3 remove 2 check 1 check 2 toggle 3 check 1 check 2 check 3 check 4 all check 10 check 20 toggle 10 remove 20 check 10 check 20 empty check 1 toggle 1 check 1 toggle 1 check 1
출력
1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 0
처음에 check 연산을 할 때마다 출력해주는 코드로 작성했었다.
계속 시간 초과가 나길래 아무리 생각해도 다른 코드가 나올 수가 없다고 생각했다...
혹시나해서 StringBuilder를 사용하여 한 번에 출력했더니 해결되었다.
import java.util.HashSet; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner scan = new Scanner(System.in); int num = Integer.parseInt(scan.nextLine()); HashSet<String> set = new HashSet<String>(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < num; i++) { String[] arr = scan.nextLine().split(" "); switch (arr[0]) { case "add": set.add(arr[1]); break; case "remove": set.remove(arr[1]); break; case "check": if (set.contains(arr[1])) { sb.append(1).append("\n"); } else { sb.append(0).append("\n"); } break; case "toggle": if (set.contains(arr[1])) { set.remove(arr[1]); } else { set.add(arr[1]); } break; case "all": set.clear(); for (int j = 0; j < 21; j++) { set.add(Integer.toString(j)); } break; case "empty": set.clear(); break; } } System.out.println(sb); } }
728x90'Java > Baekjoon' 카테고리의 다른 글
[Baekjoon] 1764번 듣보잡 (Java) (0) 2022.10.02 [Baekjoon] 1620번 나는야 포켓몬 마스터 이다솜 (Java) (0) 2022.10.02 [Baekjoon] 1676번 팩토리얼 0의 개수 (Java) (0) 2022.10.02 [Baekjoon] 11053번 가장 긴 증가하는 부분 수열 (Java) (0) 2022.08.31 [Baekjoon] 1149번 RGB거리 (Java) (0) 2022.08.30