728x90
내용
바뀐 대기열을 보고 처음의 대기열과 비교해 최소 바뀐 횟수를 출력. 단 한 사람 당 2번만 바꿀 수 있고, 3번 이상 바꿀 시 Too chaotic을 출력
입력값: t(테스트 횟수), n(롤러코스터 대기자 수), q(바뀐 대기열)
알고리즘
1부터 시작해서 n까지 원래 지점에서 앞으로 몇 번 왔는지 세어 본다(index() 사용). 제자리에 있는 것은 넘어간다
->Time limit exceeded
참고자료
리스트 삭제 관련
del list /리스트 전체 삭제
del list[인덱스 번호]
list.remove(요소) /요소가 없으면 에러
del list[list.index(찾을 요소)] /요소 없으면 에러
list.append(요소), list,insert(인덱스넘버, 요소), list.extend(리스트)
https://codechacha.com/ko/python-append-vs-extend/
문자열 특정 문자 찾기: str.find()
리스트에서는 불가
https://blockdmask.tistory.com/569
def minimumBribes(q):
num=len(q)
sum=0
for n in range(num,0,-1): #뒤의 숫자부터
if n!=q[n-1]: #n번째의 위치와 n번째 사람이 불일치하면
a=q.index(n)
if ((n-1)-a)>2:
print('Too chaotic')
return 0
else:
sum+=n-1-a
q.remove(n)
print('{}'.format (sum))
if __name__ == '__main__':
t = int(input().strip())
for t_itr in range(t):
n = int(input().strip())
q = list(map(int, input().rstrip().split()))
minimumBribes(q)
'코딩테스트 문제 > Hackerrank' 카테고리의 다른 글
[HackerRank] Recursive Digit Sum (0) | 2023.05.16 |
---|---|
[HackerRanck] Grid Challenge (0) | 2023.05.15 |
[HackerRank] Caesar Cipher (0) | 2023.05.15 |