모각코 6회차

최성민·2022년 11월 30일
0

모여서 각자 코딩

목록 보기
6/6

✏️ 코테 준비 프로그래머스 풀기



주식 가격


########### Brute Froce ###########
def solution(prices):
    answer = []
    for i in range(0,len(prices)):
        ans = 0
        for j in range(i+1,len(prices)):
            if prices[j]<prices[i]:
                ans+=1
                break
            else:
                ans+=1
        answer.append(ans)
            
    return answer

########### Stack ###########
def solution(prices):
    answer = [0]*len(prices)
    stack = [0]
    for i in range(1,len(prices)):
        if prices[i] > prices[i-1]:
            stack.append(i)
        else:
            while(len(stack)>0 and prices[i] < prices[stack[-1]]):
                idx = stack.pop()
                answer[idx] = i-idx
            stack.append(i)
    for i in stack:
        answer[i] = len(prices)-(i+1)
    return answer


주차 요금 계산


import math

def solution(fees, records):
    answer = []
    time_record = {}
    fee_record = {}
    for i in records:
        time,car,status = map(str,i.split())
        minute = 60*int(time[:2])+int(time[3:])
        if status == "IN":
            if car in time_record: 
                time_record[car][0] += minute
                time_record[car][2] +=1
            else:
                time_record[car] = [minute,0,1,0] ## 입차,출차,입차횟수,출차횟수
        elif status =="OUT":
            time_record[car][1] += minute
            time_record[car][3] +=1
        
    for car,record in time_record.items():
        if record[3] != record[2]:
            result = (60*23 + 59 + record[1]) -record[0]
        else:
            result = record[1]-record[0]
        
        if result <=fees[0]:
            fee_record[car] = fee_record.get(car,0) + fees[1]
        else:
            fee_record[car] = fee_record.get(car,0) + fees[1] + math.ceil((result-fees[0])/fees[2]) * fees[3]
            
    fee_record = sorted(fee_record.items(), key = lambda x: x[0])
    for i in fee_record:
        answer.append(i[1])
    return answer


0개의 댓글