프로그래머스 - 모의고사,소수 찾기 크레인 인형뽑기, 기능개발

이숭인·2021년 4월 1일
0

알고리즘 문제풀이

목록 보기
2/17
post-thumbnail

완전탐색

스택/큐

1. 크레인 인형뽑기

[이동] 크레인 인형뽑기 - 프로그래머스

풀이:
1. 특별한 풀이법은 없는듯. 그냥 2차원 배열에서의 데이터 조작만 하면 되는 문제.

코드:

def solution(board, moves):
    answer = 0
    bowl = list()

    for move in moves:
        for index in range(len(board)):
            if board[index][move-1] != 0: # 빈 공간이 아니라면 바구니에 넣자
                bowl.append(board[index][move-1])
                board[index][move-1] = 0
                break
        if len(bowl) > 1:
            if bowl[-1] == bowl[len(bowl)-2]: # 마지막과, 그 앞의 원소가 같다면
                bowl.pop()
                bowl.pop()
                answer += 2

    return answer

2. 기능개발

[이동] 기능개발 - 프로그래머스

풀이:
1. 가장 앞에있는 기능이 완료될 때 그 뒤로도 완료된것이 있는지 확인하고 있다면 찾아서 pop(0)

코드:

def solution(progresses, speeds):
    answer = list()

    while(progresses):
        count = 0
        for index,(_,speed) in enumerate(zip(progresses,speeds)):
            progresses[index] += speed
        for item in progresses:
            if item < 100:
                break
            count += 1

        for _ in range(count):
            progresses.pop(0)
            speeds.pop(0)

        if count > 0:
            answer.append(count)

    return answer


solution([93, 30, 55],[1, 30, 5])

다른사람풀이 :
1. time이라는 변수를 사용해 1일 2일 ,, 마다의 진행률을 구함


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
iOS Developer

0개의 댓글