onlybooks / python-algorithm-interview

<파이썬 알고리즘 인터뷰> 95가지 알고리즘 문제 풀이로 완성하는 코딩 테스트
1.21k stars 325 forks source link

p.595 태스크 스케쥴러 질문 #146

Closed jihoonk-1116 closed 2 years ago

jihoonk-1116 commented 2 years ago

좋은 책 써주셔서 감사합니다.

테스크스케쥴러 풀이 중에 sub_count 의 존재 이유가 이해가 잘 되지 않아서 질문 남깁니다! 코드를 볼땐 nested for loop 안에서 result 변수를 증가시키고 리턴 시키면 되지 않을까했는데, 이해를 하다가 하다가 갑자기 막혀버렸네요. 왜 while 마지막 라인에서 result += n - sub_count + 1 만큼 증가 시켜줘야 하나요? ㅠ 그리고 for 안에서 sub_count 가 왜 증가하나요?

likejazz commented 2 years ago

책에서는 저 부분에 대한 설명이 많이 부족했던거 같네요. 문제 풀이에 어려움을 드려 죄송합니다. sub_count는 몇 개를 추출할 수 있는지를 헤아리는 값입니다. 책에서는 n=2인 경우만 명시되어 있어 왜 필요할까 생각될 수 있지만 만약 n=3일때 아이템을 1개만 추출할 수 있다면 3번을 idle로 쉬어야 하기 때문에, result += n(3) - sub_count(1) + 1 이렇게 3이 더해지게 됩니다.

['A','A','A','B','C','D']가 있고 n=3이라면 결과는 9가 되고 A,B,C,D,A,idle,idle,idle,A 이렇게 되겠죠. 직접 계산해보면 sub_count가 어떤 역할을 하는지 이해 될거 같습니다.