728x90
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] 보다 큰 값이 있으면 뇌물 횟수 증가
- 경우 1 : q [index] 값 - (index+1) 값이 3 이상일 경우
-
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 |