끄적거림

[HackerRank] New Year Chaos 본문

Python/알고리즘(코딩테스트)

[HackerRank] New Year Chaos

Signing 2022. 6. 29. 22:31
728x90
반응형

문제

요약하면, [1,2,3, ... , n] 인 list에서 주어지는 list로 변환하려면 몇 번의 swap이 있었는지 반환하거나, 적어도 하나의 원소라도 3번 이상의 swap이 발생하면, "Too Chaostic"을 반환한다.

 

코드

# def minimumBribes(q):
#     nq = len(q)
#     raw = range(1, nq+1)
#     move_list = []
# 
#     for i in range(nq):
#         ri = raw.index(q[i])
#         move_list.append(ri - i)
#     print(move_list)
#     if max(move_list) > 2:
#         print("Too chaotic")
#     else:
#         print(sum([m for m in move_list if m > 0]))


def minimumBribes(Q):
    moves = 0

    Q = [P - 1 for P in Q]
    for i, P in enumerate(Q):
        if P - i > 2:
            print("Too chaotic")
            return

        for j in range(max(P - 1, 0), i):
            if Q[j] > P:
                moves += 1
    print(moves)


if __name__ == '__main__':
    q = [1, 2, 5, 3, 7, 8, 6, 4]

    minimumBribes(q)

해석

  1. 위에 주석처리 한 것이 내 풀이인데, 좋은 접근은 아니었다.
  2. 주석처리 하지 않은 minimumBribes 함수는 커뮤니티에서 가져온 코드이다.

 

728x90
반응형

'Python > 알고리즘(코딩테스트)' 카테고리의 다른 글

[HackerRank] Arrays: Left Rotation  (0) 2022.06.29
[HackerRank] 2D Array  (0) 2022.06.29
[HackerRank] Repeated String  (0) 2022.06.29
[HackerRank] Jumping on the Clouds  (0) 2022.06.28
[HackerRank] Counting Valleys  (0) 2022.06.28
Comments