N구 짜리 멀티탭에 여러 전기용품을 번갈아 사용할때,
멀티탭에서 코드를 최소한으로 뽑는 경우를 찾는 문제입니다.
다음의 경우로 문제를 나눠 해결하였습니다.
continuecontinuedef main():
    holes, _ = map(int, input().split())
    orders = list(map(int, input().split()))
    multitap = []
    pull_out = 0
    for idx, device in enumerate(orders):
        if device in multitap:
            continue
        elif len(multitap) < holes:
            multitap.append(device)
            continue
        multitap_idxs = []
        for plug in multitap:
            if plug in orders[idx:]:
                multitap_idxs.append(orders[idx:].index(plug))
            else:
                multitap_idxs.append(101)
        change_idx = max(range(len(multitap_idxs)), key=lambda i: multitap_idxs[i])
        multitap[change_idx] = device
        pull_out += 1
    print(pull_out)
if __name__ == "__main__":
    main()
방법은 간단한데 생각보다 코드 작성할 때 헷갈리는 부분이 많았습니다.
multitap_idxs 리스트는 멀티탭의 각 구 별 다음에 사용하게 될 순서를 나타냅니다.
이때 최대값(제일 늦게 사용 할 전기용품)의 인덱스를 가져와 멀티탭의 교체할 인덱스로 사용하는데
argmax 가 필요하여 위와 같이 max 를 이용해 구현 하였습니다.
