codeground 연습문제 6 - 좋은 수
필자는 이 문제를 풀고 나서 나름 머리를 쓴 문제라고 생각했다.
이 문제의 키워드는 "너는 배열의 인덱스를 값으로 사용할 줄 아니?" 이다.
좋은 문제이다 수열이 주어 졌을 때, 3개의 숫자의 합으로 구성이 될 수 있는 숫자이면
"좋은 수"라고 판단을 한다.
이 문제의 키워드는 "너는 배열의 인덱스를 값으로 사용할 줄 아니?" 이다.
좋은 문제이다 수열이 주어 졌을 때, 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); } } } |