[코딩테스트/프로그래머스/Python]기능개발

Enter·2021년 7월 16일
0

코딩테스트

목록 보기
6/68

💡생각

  1. deque사용해보기.
  2. progresses의 작업진도를 deque에서 하나씩 pop하고 speeds의 개발속도를 더한 뒤 다시 append(deque의 길이만큼 반복)
  3. deque의 길이단위로 반복하다가 progresses[0]이 100이상되면 count 변수에 +1.
  4. 다음 작업진도도 100이상인지 확인해서 맞으면 +1, 아니면 반복문 빠져나오기.
  5. count변수숫자 answer 배열에 append.
  6. deque가 빌때까지 반복.



❓잘못된 코드1

배포한 작업의 개발속도를 안지워줌.(13-14번줄 없어도됨.)




해결: speeds배열도 deque로 만든 다음 progresses배열 pop할 때 같이 pop해줌.



💡테스트 통과한 코드






⏬다른사람의 코드

역시나 간단.




✅deque(덱)

▪ Double-ended Queue, 양쪽 끝에서 삽입과 삭제 둘 다 가능한 자료구조, 큐 + 스택.
▪ 일반적인 리스트가 요소에 접근해서 삽입, 삭제할 때는 O(n)소요되지만 deque은 O(1)소요됨.

deque.append(item): item을 deque의 오른쪽 끝에 삽입.
deque.appendleft(item): item을 deque의 왼쪽 끝에 삽입.
deque.pop( ): deque의 오른쪽 끝 요소를 가져오는 동시에 deque에서 삭제.
deque.popleft( ): deque의 왼쪽 끝 요소를 가져오는 동시에 deque에서 삭제.
deque.extend(array): array를 순환하면서 deque 오른쪽에 추가.
deque.extendleft(array): array를 순환하면서 deque 왼쪽에 추가.
deque.remove(item): item을 deque에서 찾아 삭제.
deque.rotate(num): deque을 num만큼 회전.







🔗프로그래머스 - 기능개발
https://programmers.co.kr/learn/courses/30/lessons/42586

profile
Cherish the moment :)

0개의 댓글