Java/Algorithm

[Java-Algorithm] HackerRank Java New Year Chaos 풀이

Jeong Jeon
반응형

1). 문제 : www.hackerrank.com/challenges

 

HackerRank

Join over 11 million developers in solving code challenges on HackerRank, one of the best ways to prepare for programming interviews.

www.hackerrank.com

2). 풀이 : 

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;

public class Solution {

    // Complete the minimumBribes function below.
    static void minimumBribes(int[] q) {
        int cnt =0;
        
        for(int i=q.length-1; i>=0; i--) {
        //한 사람이 3명에게 뇌물을 줬을 때 => 12345 숫자순서 활용
            if(q[i] - (i + 1) > 2) {
                System.out.println("Too chaotic");
                return;
            }
            //Math.max()=> 두수중 큰값을 뱉는다. => index Out of bounce 해결 2번까지는 앞 한자리
            //인당 최대 2명까지만 뇌물 가능
            for (int j = Math.max(0, q[i] - 2); j <= i; j++)
                if (q[j] > q[i]) {
                    cnt++;
                }
        }
        System.out.println(cnt);

    }

    private static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        int t = scanner.nextInt();
        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

        for (int tItr = 0; tItr < t; tItr++) {
            int n = scanner.nextInt();
            scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

            int[] q = new int[n];

            String[] qItems = scanner.nextLine().split(" ");
            scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

            for (int i = 0; i < n; i++) {
                int qItem = Integer.parseInt(qItems[i]);
                q[i] = qItem;
            }

            minimumBribes(q);
        }

        scanner.close();
    }
}

 

아 정말 어렵다..

애매하게 Test Case 한개 or 두개 가 꼭 틀리게 나온다..

결국... 

언제 잘할 수 있을것인가 !!!ㅎ..

반응형