❔문제❔

11723. 집합

🙌Solution🙌

뭔가 문제를 읽으면서 set을 사용하면 딱 좋겠다 생각을 했는데 Set의 의미가 집합이라는 의미였다.😅

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

public class Main {

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

    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 m=Integer.parseInt(br.readLine().trim());
        for(int i=0;i<m;i++){
            String[] input=br.readLine().trim().split(" ");
            switch(input[0]){
                case "add" : add(Integer.parseInt(input[1]));
                    break;
                case "remove" : remove(Integer.parseInt(input[1]));
                    break;
                case "check" : bw.write(check(Integer.parseInt(input[1]))+"\n");
                    break;
                case "toggle" : toggle(Integer.parseInt(input[1]));
                    break;
                case "all" : all();
                    break;
                case "empty" : empty();
            }
        }
        bw.flush();
    }

    static void add(int x){ set.add(x); }
    static void remove(int x){ set.remove(x); }
    static int check(int x){return (set.contains(x))?1:0;}
    static void toggle(int x){
        if(!set.contains(x))set.add(x);
        else set.remove(x);
    }
    static void all(){
        IntStream st=IntStream.rangeClosed(1,20);
        set=new HashSet<Integer>();
        set.addAll(st.boxed().collect(Collectors.toList()));

    }
    static void empty(){
        set=new HashSet<Integer>();
    }
}

🚀Advanced🚀

  • IO시간 줄이기 위해 String,String을 검사하지 않고 앞
  • 입력 특성 상(1~20) Set을 안 쓰고 배열로 구현도 가능
  • set 타입을 굳이 Integer로 하지 않고 String으로 하는것도 같은 결과일 듯

🔠Language Change(kotlin)🔠

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter

fun main(){

    val br= BufferedReader(InputStreamReader(System.`in`))
    val bw= BufferedWriter(OutputStreamWriter(System.out))

    val m=br.readLine().toInt()
    var set=mutableSetOf<String>()
    for(i in 0 until m){
        val input=br.readLine().split(" ")
        when(input[0]){
            "add"->set.add(input[1])
            "remove"-> set.remove(input[1])
            "check"->bw.write(if(set.contains(input[1])) "1\n" else "0\n")
            "toggle"->if(set.contains(input[1]))set.remove(input[1])else set.add(input[1])
            "all"-> set= List(20){"${it+1}"}.toMutableSet()
            "empty"->set= mutableSetOf()
        }
    }
    bw.flush()
}

댓글남기기