codeground 연습문제 6 - 좋은 수

 필자는 이 문제를 풀고 나서 나름 머리를 쓴 문제라고 생각했다.

이 문제의 키워드는 "너는 배열의 인덱스를 값으로 사용할 줄 아니?" 이다.

좋은 문제이다 수열이 주어 졌을 때, 3개의 숫자의 합으로 구성이 될 수 있는 숫자이면

"좋은 수"라고 판단을 한다.




 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
32
33
import java.util.Arrays;
import java.util.Scanner;

class Solution {
 final static int M = 200000;
    static int Answer, T, N, x;
    static int[] a = new int[5005];
    static boolean[] s = new boolean[400005];
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        T = sc.nextInt();
        for (int i = 0; i < T; i++) {
            Answer = 0; N = sc.nextInt();
            Arrays.fill(s, false); Arrays.fill(a,0);
            for (int j = 0; j < N; j++) {
                a[j] = sc.nextInt();
                for (int k = 0; k < j; k++) {
                    x = a[j] - a[k];
                    if (s[x + M]) {
                        Answer++;
                        break;
                    }
                }
                s[2 * a[j] + M] = true;
                for (int k = 0; k < j; k++) {
                    s[a[k] + a[j] + M] = true;
                }
            }
            System.out.println("Case #"+(i+1));
            System.out.println(Answer);
        }
    }
}

이 블로그의 인기 게시물

웹툰 무료로 볼 수 있는 사이트

BackJoon 1011, Fly me to the alpha centauri, 규칙 찾기 문제

BaekJoon 6591, 이항 쇼다운 조합문제