문제
뇌물을 주고받아 순서가 변경된 que가 주어졌을 때 몇 번 이동해야하는지를 출력.
단 아래 조건에 어긋난 que일 경우 'Too Chaotic'을 출력
조건
- 바로 앞에 있는 사람한테 뇌물을 주고 앞으로 갈 수 있음
- 한 사람 당 2명까지 뇌물을 줄 수 있음. 즉 최대 2번 앞으로 이동가능
입력 예
2 (입력 세트의 개수)
5 (큐의 길이)
2 1 5 3 4
5
2 5 1 3 4
출력 예
3
Too chaotic
첫번째 큐(2 1 5 3 4)의 경우
5가 3, 4에게 뇌물을 주고 2 번이동
2가 1에게 뇌물을 주고 1 번 이동
조건에 맞게 총 3번 이동했으므로 3을 출력
두번째 큐(2 5 1 3 4)의 경우
첫번째 큐에서 5가 1에게 뇌물을 주고 1번더 이동했으나 조건 2에 어긋나므로 Too Chaotic을 출력
제출한 코드
def minimumBribes(n, q):
for i, j in enumerate(q):
if (j - 1) - i > 2:
return "Too chaotic"
cnt = 0
for i in range(1, n):
j = i
while j > 0 and q[j-1] > q[j]:
q[j-1], q[j] = q[j], q[j-1]
j -= 1
cnt+=1
return cnt
풀이
- 인덱스와 3이상 차이나는 사람이 있을 경우(2번넘게 뇌물을 준 사람이 있음) Too Chaotic 출력
- 삽입정렬을 이용하여 이동한 횟수를 카운트하여 출력
'알고리즘 > 해커랭크' 카테고리의 다른 글
Two Strings (0) | 2020.03.28 |
---|---|
Jumping on the Clouds (0) | 2020.03.20 |
Arrays: Left Rotation (0) | 2020.03.16 |
Cats and a Mouse (0) | 2020.03.16 |
Repeated String (0) | 2020.03.09 |