๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 11723 ์ง‘ํ•ฉ

by ๐ŸŠ๊ทค๐ŸŠ 2024. 7. 8.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/11723

  • ๋น„์–ด์žˆ๋Š” ๊ณต์ง‘ํ•ฉ S๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. 
    • add x: S์— x๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. (1 ≤ x ≤ 20) S์— x๊ฐ€ ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์—ฐ์‚ฐ์„ ๋ฌด์‹œํ•œ๋‹ค.
    • remove x: S์—์„œ x๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. (1 ≤ x ≤ 20) S์— x๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์—ฐ์‚ฐ์„ ๋ฌด์‹œํ•œ๋‹ค.
    • check x: S์— x๊ฐ€ ์žˆ์œผ๋ฉด 1์„, ์—†์œผ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค. (1 ≤ x ≤ 20)
    • toggle x: S์— x๊ฐ€ ์žˆ์œผ๋ฉด x๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ์—†์œผ๋ฉด x๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. (1 ≤ x ≤ 20)
    • all: S๋ฅผ {1, 2, ..., 20} ์œผ๋กœ ๋ฐ”๊พผ๋‹ค.
    • empty: S๋ฅผ ๊ณต์ง‘ํ•ฉ์œผ๋กœ ๋ฐ”๊พผ๋‹ค.
  • check ์—ฐ์‚ฐ์ด ์ฃผ์–ด์งˆ๋•Œ๋งˆ๋‹ค, ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ

์•„์ด๋””์–ด

  • ์—ฐ์‚ฐ ํšŸ์ˆ˜๋งŒํผ boolean ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ true, false๋กœ ๊ฐ’์„ ๊ด€๋ฆฌํ•˜๋ฉด ์ผ์ผ์ด ๊ฐ’์„ ๋„ฃ์—ˆ๋‹ค๊ฐ€ ๋นผ๋Š” ๊ฒƒ ๋ณด๋‹ค ์ข€ ๋” ํšจ์œจ์ ์ด์ง€ ์•Š์„๊นŒ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. 
  • if๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์•˜๋‹ค. 

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค

  •  ๋ฐ”๋ณด ๊ฐ™๊ฒŒ๋„... "add 1" ์ฒ˜๋Ÿผ ๋ชจ๋‘ "๋ฌธ์ž + ์ˆซ์ž" ํ˜•ํƒœ๋กœ ์ž…๋ ฅ์ด ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ๋ฐ ํ•ญ์ƒ ์—ฐ์‚ฐ ๋ฐฉ๋ฒ•์„ ์ž…๋ ฅ๋ฐ›๊ณ  nextToken์„ ์จ์„œ ๋ฌธ์ž์—ด๊ณผ ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋ ค๋‹ค๋ณด๋‹ˆ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค.  (all์ด๋‚˜ empty๋Š” ๋’ค์— ์ˆซ์ž๊ฐ€ ์—†๋‹ค...)
  • ํ•ญ์ƒ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ• ๊ฒŒ ์—†๋Š”์ง€ ์œ ๋…ํ•˜์ž....!

์•ž์œผ๋กœ๋„ ํŒŒ์ดํŒ…!!

 

์ฝ”๋“œ

import  java.io.*;
import java.util.*;

public class BOJ11723 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int n = Integer.parseInt(br.readLine());

        boolean arr[] = new boolean[21];

        for(int i = 0; i < n; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());

            String cal = st.nextToken();

            if(cal.equals("add")){
                int x = Integer.parseInt(st.nextToken());

                if(arr[x] == false){
                    arr[x] = true;
                }
            }
            if(cal.equals("remove")){
                int x = Integer.parseInt(st.nextToken());

                if(arr[x] == true){
                    arr[x] = false;
                }
            }
            if(cal.equals("check")){
                int x = Integer.parseInt(st.nextToken());

                if(arr[x] == true){
                    sb.append(1 + "\n");
                }
                else{
                    sb.append(0 + "\n");
                }
            }
            if(cal.equals("toggle")){
                int x = Integer.parseInt(st.nextToken());

                if(arr[x] == true){
                    arr[x] = false;
                }
                else{
                    arr[x] = true;
                }
            }
            if(cal.equals("all")){
                for(int j = 0; j < 21; j++){
                    arr[j] = true;
                }
            }
            if(cal.equals("empty")){
                for(int j = 0; j < 21; j++){
                    arr[j] = false;
                }
            }
        }

        System.out.println(sb);
    }
}