23-06-29 TIL

more·2023년 6월 29일
0

문제

  • 백준 1123 (집합) - Java
    • 간단하게 TreeSet을 사용해서 풀려고 한 문제인데 도중에 숫자가 두자리수가 되면 답이 다르게 나옴
    • 단순히 10을 1로 인식하는 것인지, 아니면 다른 문제가 있는 것인지 확인해보아야겠다.

시도

  • 백준 1123 (집합) - Java
    • 직접 찍어보니 숫자 10을 제대로 인식하고 있는 것으로 보인다.
      -> 다른 문제가 있는 것으로 보임
    • 문자를 받고 숫자를 받지 않는 경우는 empty랑 all 밖에 없는데 그거에서 문제가 있는지 확인해보자
    • empty에는 문제가 없다.
    • all도 제대로 정렬해주는 것을 볼 수 있었는데...

해결

  • 백준 1123 (집합) - Java
    • all이 정렬하는 것이 아니라 1부터 20까지가 전부 있는걸로 바꾸는 거였다...
      -> 문제를 제대로 읽고 풀자...

코드

import java.io.*;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;

public class Main {
    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 testCase = Integer.parseInt(br.readLine());

        Set<Integer> set = new TreeSet<>();

        for (int i = 0; i < testCase; i++) {

            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            String op = st.nextToken();

            if (op.equals("add")) {
                int check = Integer.parseInt(st.nextToken());
                set.add(check);
            }
            else if (op.equals("remove")) {
                int check = Integer.parseInt(st.nextToken());
                if (set.contains(check)) set.remove(check);
            }
            else if (op.equals("check")) {
                int check = Integer.parseInt(st.nextToken());
                if (set.contains(check))  bw.write(String.valueOf(1) + '\n');
                else bw.write(String.valueOf(0) + '\n');
            }
            else if (op.equals("toggle")) {
                int check = Integer.parseInt(st.nextToken());
                if (set.contains(check))  set.remove(check);
                else set.add(check);
            }
            else if (op.equals("empty")) {
                set.clear();
            }
            else if (op.equals("all")) {
                set.clear();
                set.add(1);
                set.add(2);
                set.add(3);
                set.add(4);
                set.add(5);
                set.add(6);
                set.add(7);
                set.add(8);
                set.add(9);
                set.add(10);
                set.add(11);
                set.add(12);
                set.add(13);
                set.add(14);
                set.add(15);
                set.add(16);
                set.add(17);
                set.add(18);
                set.add(19);
                set.add(20);
            }
        }
        bw.flush();
        bw.close();
        br.close();
    }
}

0개의 댓글