티스토리 뷰

문제주소

백준 1009 분산처리 www.acmicpc.net/problem/1009

 

1009번: 분산처리

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000)

www.acmicpc.net

백준 1076 저항 www.acmicpc.net/problem/1076

 

1076번: 저항

첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 색은 모두 위의 표에 쓰여 있는 색만 주어진다.

www.acmicpc.net

백준 1052 물병 www.acmicpc.net/problem/1052

 

1052번: 물병

지민이는 N개의 물병을 가지고 있다. 각 물병에는 물을 무한대로 부을 수 있다. 처음에 모든 물병에는 물이 1리터씩 들어있다. 지민이는 이 물병을 또 다른 장소로 옮기려고 한다. 지민이는 한 번

www.acmicpc.net

내 풀이

 private static void bj1009() throws IOException {
        int[][] remains = {
            {10},
            {1},
            {6, 2, 4, 8},
            {1, 3, 9, 7},
            {6, 4},
            {5},
            {6},
            {1, 7, 9, 3},
            {6, 8, 4, 2},
            {1, 9}
        };
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int ts = Integer.parseInt(br.readLine());
        for (int i = 0; i < ts; i++) {
            String[] pair = br.readLine().split(" ");
            int a = Integer.parseInt(pair[0]) % 10;
            int b = Integer.parseInt(pair[1]);
            if (a == 0 || a == 1 || a == 5 || a == 6) {
                System.out.println(remains[a][0]);
            } else if (a == 4 || a == 9) {
                System.out.println(remains[a][b % 2]);
            } else {
                System.out.println(remains[a][b % 4]);
            }

        }
    }

    private static void bj1076() throws IOException {
        Map<String, Integer> resistance = new HashMap<>(Map.of(
            "black", 0,
            "brown", 1,
            "red", 2,
            "orange", 3,
            "yellow", 4,
            "green", 5,
            "blue", 6,
            "violet", 7,
            "grey", 8,
            "white", 9
        ));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input1 = br.readLine();
        String input2 = br.readLine();
        String input3 = br.readLine();
        int two = resistance.get(input1) * 10 + resistance.get(input2);
        if (two == 0) {
            System.out.println("0");
        } else {
            StringBuilder answer = new StringBuilder();
            answer.append(two);
            answer.append("0".repeat(resistance.get(input3)));
            System.out.println(answer);
        }

    }


    private static void bj1052() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");
        int n = Integer.parseInt(input[0]);
        int k = Integer.parseInt(input[1]);

        if (Integer.bitCount(n) <= k) {
            System.out.println("0");
            return;
        }

        int newCount = 1;
        while (Integer.bitCount(n + newCount) > k) {
            newCount++;
        }
        System.out.println(newCount);

    }

정리

자바로 알고리즘 문제를 많이 안 풀어서 단순히 입출력을 받는 것도 많이 헤맸다. BufferedReader로 읽어오는 것, 반복되는 값은 배열로 정리하는 것이 편하다는 것 (다소 하드코딩 되어있지만..ㅠㅠ), 문자열에 StringBuilder를 적용하는 것 등을 느꼈다. 물병 문제가 가장 오래걸렸는데 2진법스러운 느낌이 나는 문제는 binary 형태로 풀면 편하다! 😁 일단 푸는게 제일 중요한데 시간!! 이 문제들을 풀면서 효율성을 많이 생각하게 되었다! (자꾸 통과 안 되면 시간때문인가ㅠㅠ 하면서 성능을 높이기 위해 고민을 많이 했다) 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함