알고리즘/HackerRank

New Year Chaos

webmaster 2021. 11. 19. 21:46
728x90

https://www.hackerrank.com/challenges/new-year-chaos/problem?isFullScreen=true&h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=arrays

 

New Year Chaos | HackerRank

Determine how many bribes took place to get a queue into its current state.

www.hackerrank.com

 

  • 문제
    • 문제
       
    • 놀이기구를 기다리는 줄에서 뇌물이 최소 몇 번 오갔는지 구하는 문제.
    • 단, 한 사람이 뇌물을 3번 이상 준 경우는 Too chaotic을 결과로 해야 한다

풀이

  • q의 크기만큼 for문을 돈다
    • 경우 1 : q [index] 값 - (index+1) 값이  3 이상일 경우
      • 한 사람이 뇌물을 3번 이상 줬다면 자신의 원래 위치보다 3 이상 앞에 있을 것이다.
      • Too Chaotic을 반환한다.
    • 경우 2 : 현재 위치보다 1 또는 2 작은 위치에서 뇌물을 주고받은 사람이 있는지 확인한다.
      • 현재 위치의 수보다 크다면 뇌물을 주고받은 것이다.
      • q [index] 보다 큰 값이 있으면 뇌물 횟수 증가
  •  public static void minimumBribes(List<Integer> q) {
            int answer = 0;
            
            for(int i=0;i<q.size();++i){
            	  if(q.get(i) - (i+1) > 2){//경우 1 : 3회이상 뇌물을 줬다
    	              System.out.println("Too chaotic");
    	              return;
            	  }
            	  for (int j = Math.max(0, q.get(i) - 2); j < i; j++) //인당 최대 2명까지만 뇌물 가능
                      if (q.get(j) > q.get(i)) // 현재 값 q.get(i) 보다 큰 값이 있으면 이사람도 뇌물을 준것이다
                    	  answer++;
            }
            System.out.println(answer);
        }
728x90

'알고리즘 > HackerRank' 카테고리의 다른 글

Array Manipulation  (0) 2021.11.19
Minimum Swaps 2  (0) 2021.11.19
Arrays Left Rotation  (0) 2021.11.18
2D Array - DS  (0) 2021.11.18
Repeated String  (0) 2021.11.18