본문 바로가기
1 Day 1 Algorithms

[2019.02.22] Picking Numbers

by 곰돌찌 2019. 2. 22.

Problem


Given an array of integers, find and print the maximum number of integers you can select from the array such that the absolute difference between any two of the chosen integers is less than or equal to . For example, if your array is , you can create two subarrays meeting the criterion:  and . The maximum length subarray has  elements.

Function Description

Complete the pickingNumbers function in the editor below. It should return an integer that represents the length of the longest array that can be created.

pickingNumbers has the following parameter(s):

  • a: an array of integers

Input Format

The first line contains a single integer , the size of the array 
The second line contains  space-separated integers .

Constraints

  • The answer will be .

Output Format

A single integer denoting the maximum number of integers you can choose from the array such that the absolute difference between any two of the chosen integers is .

Sample Input 0

6
4 6 5 3 3 1

Sample Output 0

3

Explanation 0

We choose the following multiset of integers from the array: . Each pair in the multiset has an absolute difference  (i.e.,  and ), so we print the number of chosen integers, , as our answer.

Sample Input 1

6
1 2 2 3 1 2

Sample Output 1

5

Explanation 1

We choose the following multiset of integers from the array: . Each pair in the multiset has an absolute difference (i.e., , and ), so we print the number of chosen integers, , as our answer.


How I solved the problem


# max index가 100이기 때문에 배열 int[] arr = new int[100]을 넣고

# 파라미터로 받은 list 배열 a의 각 값의 숫자를 arr의 인덱스로 인지해서 각각 배열에 넣어줌

# 두개의 인접한 아이들의 최대 개수를 구하는 것이기 때문에 for문을 돌려서 최대개수를 세어주면될듯!


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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
 
class Result {
 
    /*
     * Complete the 'pickingNumbers' function below.
     *
     * The function is expected to return an INTEGER.
     * The function accepts INTEGER_ARRAY a as parameter.
     */
 
    public static int pickingNumbers(List<Integer> a) {
        // Write your code here
        int aLength = a.size();
        int maxIndex = 100;
        int[] arr = new int[maxIndex];
 
        for (int number : a) {
            arr[number]++;
        }
 
        int result = 0;
 
        for (int i = 0; i < maxIndex - 1; i++) {
            result = Math.max(result, arr[i] + arr[i + 1]);
        }
        return result;
        
    }
 
}
 
public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
 
        int n = Integer.parseInt(bufferedReader.readLine().trim());
 
        List<Integer> a = Stream.of(bufferedReader.readLine().replaceAll("\\s+$""").split(" "))
            .map(Integer::parseInt)
            .collect(toList());
 
        int result = Result.pickingNumbers(a);
 
        bufferedWriter.write(String.valueOf(result));
        bufferedWriter.newLine();
 
        bufferedReader.close();
        bufferedWriter.close();
    }
}
 
cs

[출처 : https://www.hackerrank.com ]


'1 Day 1 Algorithms' 카테고리의 다른 글

[2019.02.26] The Hurdle Race  (0) 2019.02.26
[2019.02.25] Climbing the Leaderboard  (0) 2019.02.25
[2019.02.20] Forming a Magic Square  (0) 2019.02.20
[2019.02.19] Cats and a Mouse  (0) 2019.02.19
[2019.02.18] Electronics Shop  (0) 2019.02.18

댓글