풀이방법
사용된 것:
구현
2023.09.20
실제로 Set을 선언하여 구현하면 시간초과가 발생한다.
이번에는 1차원 Boolean 배열을 사용하여 해결하였다.
후에 비트마스크를 사용해서도 시도해보겠다.
코드
Java(2023.09.20)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashSet;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 0~21의 인덱스를 가진 Boolean 배열 생성 후 전체 false로 초기화
Boolean[] arr = new Boolean[21];
Arrays.fill(arr, false);
// 정수 M 읽어오기
int m = Integer.parseInt(br.readLine());
// 출력 문자열을 담을 스트링빌더 선언
StringBuilder sb = new StringBuilder();
for(int i = 0; i<m; i++) {
// 한 줄 읽어오기
StringTokenizer st = new StringTokenizer(br.readLine());
// 첫 단어 가져오기
String command = st.nextToken();
// 첫 단어의 내용에 따라 swtich-case 문 수행
switch(command) {
case "add": arr[Integer.parseInt(st.nextToken())] = true;
break;
case "remove": arr[Integer.parseInt(st.nextToken())] = false;
break;
case "check": if(arr[Integer.parseInt(st.nextToken())]) sb.append(1 + System.lineSeparator());
else sb.append(0 + System.lineSeparator());
break;
case "toggle": int num = Integer.parseInt(st.nextToken());
if(arr[num]) arr[num] = false;
else arr[num] = true;
break;
case "all": Arrays.fill(arr, true);;
break;
case "empty": Arrays.fill(arr, false);;
break;
}
}
// 정답 출력
System.out.print(sb);
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#18110 : solved.ac (0) | 2023.09.20 |
---|---|
#5358 : Football Team (0) | 2023.09.05 |
#11279 : 최대 힙 (0) | 2023.05.17 |
#14244 : 트리 만들기 (0) | 2023.05.15 |
#24416 : 알고리즘 수업 - 피보나치 수 1 (0) | 2023.04.05 |