[Programmers] 기능개발

yunan·2020년 9월 15일
0
post-thumbnail

🔦 문제 링크

✍️ 나의 풀이

  • 조건을 만족해야만 큐에서 꺼낼 수 있다.
  1. 조건을 만족하는데 걸리는 시간을 모두 기록한 리스트를 만듬
  2. 리스트를 이용해 한번 배포에 꺼낼 수 있는 수를 기록
  3. 모두 꺼낼 때 까지 반복

🛠 나의 코드

# velog
# zip에 대한 공부
# math 올림 반올림에 대한 공부

def solution(progresses, speeds):
    date = []
    answer = []
    for i, v in enumerate(progresses):
        temp = speeds[i]
        val = 100 - v
        if val % temp != 0:
            date.append(int(val // temp + 1))
        else:
            date.append(int(val / temp))
    print(date)
    i = 0
    while i < len(date):
        print(i)
        start = date[i]
        num = 1
        while i < len(date) - 1:
            if start >= date[i + 1]:
                i += 1
                num += 1
            else:
                break
        i += 1
        answer.append(num)

    return answer

✍️ 다른 사람 풀이

  • time을 이용한 검사
  • 한번의 반복문으로 해결
  1. 현재 빠져나와야 하는 값이 100% 가 될 때 까지 time을 증가시킴
  2. 그 값이 100%을 넘으면 큐에서 빼고 count를 증가시킴
  3. 다음 큐를 검사해서 100%가 아니면 count 수만큼 배포 그리고 초기화
  4. 이를 반복해서 큐가 모두 빠질 때까지 반복

🛠 다른 사람 코드

def solution(progresses, speeds):
    print(progresses)
    print(speeds)
    answer = []
    time = 0
    count = 0
    while len(progresses)> 0:
        if (progresses[0] + time*speeds[0]) >= 100:
            progresses.pop(0)
            speeds.pop(0)
            count += 1
        else:
            if count > 0:
                answer.append(count)
                count = 0
            time += 1
    answer.append(count)
    return answer
profile
Go Go

0개의 댓글