๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 11723๋ฒˆ ์ง‘ํ•ฉ ์ž๋ฐ” ๋ฌธ์ œ ํ’€์ด

by Wonit 2021. 7. 5.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ ๋ฌธ์ œ ์ด๋ฆ„์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

11723๋ฒˆ: ์ง‘ํ•ฉ

์ฒซ์งธ ์ค„์— ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์—ฐ์‚ฐ์˜ ์ˆ˜ M (1 ≤ M ≤ 3,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์— ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์—ฐ์‚ฐ์ด ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด์ž.

 

๋ฌธ์ œ ์ ‘๊ทผ

 

์ด๋ฒˆ ๋ฌธ์ œ๋Š” Java์˜ Set ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

๋ฌธ์ œ์—์„œ ์ œ๊ณต๋˜๋Š” ์—ฐ์‚ฐ๋“ค์ด ๋ชจ๋‘ Set ์˜ ๊ฐœ๋…๊ณผ ์ผ์น˜ํ•˜๋Š” ์—ฐ์‚ฐ๋“ค์ด ๋Œ€๋ถ€๋ถ„์ด๋ผ์„œ HashSet ์„ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.

 

ํ•ด๊ฒฐ๋ฒ•

 

์—ฐ์‚ฐ์— ๋”ฐ๋ฅธ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  HashSet ์—ฐ์‚ฐ์„ ๋Œ€์‹  ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค

 

์ •๋‹ต ์ฝ”๋“œ

 

import java.io.*;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public class Main {

    private static Set<Integer> set = new HashSet<>();

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

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

        while(loop-- > 0) {
            String[] operators = br.readLine().split(" ");

            String operator = operators[0];

            if(operators.length != 1) {

                int operand = Integer.parseInt(operators[1]);

                switch(operator) {
                    case "add" :
                        add(operand);
                        break;
                    case "remove":
                        remove(operand);
                        break;
                    case "check":
                        bw.write(check(operand) + "\n");
                        break;
                    case "toggle":
                        toggle(operand);
                        break;
                    default:
                        break;
                }
            }else {
                switch(operator) {
                    case "all":
                        all();
                        break;
                    case "empty":
                        empty();
                        break;
                    default:
                        break;
                }
            }
        }

        bw.flush();
        bw.close();
    }

    private static void add(int value) {
        set.add(value);
    }

    private static void remove(int value) {
        if(set.contains(value)) set.remove(value);
    }

    private static int check(int value) {
        if(set.contains(value)) return 1;
        else return 0;
    }

    private static void toggle(int value) {
        if(set.contains(value)) {
            remove(value);
        }else {
            add(value);
        }
    }

    private static void all() {
        IntStream.range(1, 21).forEach(i -> add(i));
    }

    private static void empty() {
        set.clear();
    }
}

 


์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€