1700. 멀티탭 스케쥴링

멍진이·2021년 6월 15일
0

백준 문제풀기

목록 보기
9/36

문제 링크

1700. 멀티탭 스케쥴링

문제 코드


num_list = list(map(int,input().split()))

hole = num_list[0]
use = num_list[1]
multi_tab = []

num_list = list(map(int,input().split()))


count = 0
for i in range(len(num_list)):
    if num_list[i] in multi_tab:
        continue

    if hole >0:
        multi_tab.append(num_list[i])
        hole -=1

    else:
        idx = i
        tmp_list = []
        result = 0
        for j in range(idx,use):
            tmp_list.append(num_list[j])
        for j in multi_tab:
            if j not in tmp_list:
                result = j
                break
        if result == 0 :
            tmp_multi = multi_tab.copy()
            for j in tmp_list:
                if len(tmp_multi) == 1:
                    result = tmp_multi[0]
                    break
                if j in tmp_multi:
                    tmp_multi.remove(j)

        multi_tab.remove(result)
        count+=1
        multi_tab.append(num_list[i])

print(count)

문제 풀이

  • 추가할 전자제품이 이미 멀티탭에 꽂혀 있으면 continue
  • 안 꽂혀 있지만 멀티탭이 남으면 멀티탭에 추가해주고 패스
  • 안 꽂혀 있고 남은 멀티탭도 없으면 앞으로 더 꽂아줘야할 전자 제품 리스트를 확인
  • 더 꽂아줘야할 전자 제품 리스트에서 지금 멀티탭에 꽂혀있는 전자제품중 없는게 있다면 빼버리고 해당 전자제품을 result로
  • 더 꽂아줘야할 전자 제품 리스트에서 지금 멀티탭에 꽂혀있는 전자제품이 모두 있다면, 가장 마지막에 필요한것을 result로 선정
  • result를 제거하고 count를 증가, 지금 현재 idx의 전자제품을 멀티탭에 추가해줌
profile
개발하는 멍멍이

0개의 댓글