Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 스택
- Flutter
- 재귀함수
- 14863
- 해시해킹
- dart
- Crossfit
- 15353
- 크로스핏
- DP
- 1로만들기2
- BOJ
- sw expert academy
- 4811
- spring boot
- 재귀
- 동적프로그래밍
- 회전하는큐
- 26008
- C++
- 백준
- BOJ14889
- D1
- Python
- 브루트포스
- 삼성
- 1781
- 서울에서경산까지
- 15662
- 그리디
Archives
- Today
- Total
곧죽어도 콛잉
[프로그래머스 / Python] 기능개발 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42586
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이 문제가 queue라는 걸 알고 들어가면 쉽게 풀 수 있는 문제다.
pair로 (작업진도율, 작업속도)를 묶어서 해당값을 하나의 큐로 해주면 된다!
그리고 queue의 top이 작업진도율이 100이되면, 해당 top을 dequeue 해준다!
내가 너무 C스럽게 푼 것 같아서 pythonic한 코드를 찾아봤는데 가독성은 구리지만 정말 숏코딩이다....
빨리 파이썬 연습해서 단련해야겠다
from collections import deque
def solution(progresses, speeds):
answer = []
q = deque()
for i in range(len(progresses)):
q.append([progresses[i], speeds[i]])
s = 0
while s<len(progresses):
a = 0
for i in q:
i[0] += i[1]
while q:
if q[0][0] >= 100 :
a+=1
s+=1
q.popleft()
else:
break
if a>0:
answer.append(a)
return answer
# ================= 아래는 zip을 활용한 다른풀이 (숏코딩)
def solution2(progresses, speeds):
q=[]
for p, s in zip(progresses, speeds):
if len(q)==0 or q[-1][0]<-((p-100)//s): # 작업일수 기준..!!
q.append([-((p-100)//s),1])
else:
q[-1][1]+=1
return [i[1] for i in q]
'Coding Test > Python' 카테고리의 다른 글
[프로그래머스 / Python] 나누어 떨어지는 숫자 배열 (0) | 2024.02.21 |
---|---|
[BOJ 10818 / Python] 최소, 최대 (0) | 2024.02.21 |
[BOJ 1021 / Python] 회전하는 큐 (0) | 2024.02.20 |
[프로그래머스 / Python] 같은 숫자는 싫어 (0) | 2024.02.19 |
[BOJ 25556 / Python] 포스택 (0) | 2024.02.19 |
Comments