temp = socket.copy() 로 해야 복사본이 생성된다. 그냥 temp = socket 이렇게 하면 같이 동기화됨.

예전에는 어떻게 풀어야 되는지 도무지 감도 안오던 문제였는데, 다시 보니 기억도 나고 실제로도 쓰이는 유용한 알고리즘이다.

import sys
sys.stdin = open('input.txt')
input = sys.stdin.readline

N, k = map(int, input().split())
schedule = list(map(int, input().split()))

socket = []
cnt = 0

for i in range(k):
    # 이미 socket에 꽂혀있으면
    if schedule[i] in socket:
        continue

    # 안꽂혀있고 소켓 자리가 비어있으면
    elif len(socket) < N:
        socket.append(schedule[i])
        continue

    # 교체를 해야된다면
    else:
        temp = socket.copy()
        for temp_usage in range(i+1, k) :
            if len(temp) <= 1:
                break
            # socket에 꽂혀있는 것 중, 금방 사용할 것들은 남겨놓고, 
						# schedule에서 제일 늦게 사용되는것을 빼는작업
            if schedule[temp_usage] in temp:
                temp.remove(schedule[temp_usage])
    
        # temp[0]로 한 이유는 안쓰게 될 것들이 한개 이상일 수도 있어서
        socket.remove(temp[0])
        socket.append(schedule[i])
        cnt += 1

print(cnt)

        

# print(socket)