프로그래머스 92341. 주차 요금 계산

2023. 11. 9. 17:04·프로그래머스

https://school.programmers.co.kr/learn/courses/30/lessons/92341

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import math

def solution(fees,records):

    garage = {} # 주차장
    fee = {}    # 요금
    times = {}  # 총 이용시간 누적합

    # 시간 누적합
    for record in records:
        info = list(record.split())
        if info[2] == "IN": # 들어옴! 시간 갱신
            garage[info[1]] = info[0]

        else: # 나감!
            hour = int(info[0][0:2]) - int((garage[info[1]])[0:2])
            if int(info[0][3:]) - int(garage[info[1]][3:]) < 0:
                hour -= 1
                minute = 60 - (int(garage[info[1]][3:]) - int(info[0][3:]))
            else:
                minute = int(info[0][3:]) - int(garage[info[1]][3:])
            total_time = hour * 60 + minute

            if info[1] in times.keys(): # 2회차면 누적
                times[info[1]] += total_time
            else:                       # 1회차면 생성
                times[info[1]] = total_time

            garage[info[1]] = 0  # 나간거 표시

    # 입차 후 출차내역 없음 -> 23:59에 출차된 것으로 간주
    for g in garage.keys():
        if garage.get(g) != 0:

            hour = 23 - int(garage.get(g)[0:2])
            minute = 59 - int(garage.get(g)[3:])
            total_time = hour * 60 + minute

            if g in times.keys():
                times[g] += total_time
            else:
                times[g] = total_time

    # 요금계산
    for time in times.keys():
        if times[time] <= fees[0]: # 기본요금이면
            fee[time] = fees[1]
        else:                      # 초과요금
            fee[time] = fees[1] + (math.ceil((times[time] - fees[0]) / fees[2])) * fees[3]

    ans = []
    fin = sorted(fee)
    for f in fin:
        ans.append(fee[f])
    return ans

- 너무 복잡하게 풀었네...내가봐도 잘 모르겠다...

- 딕셔너리를 3개나 만들어서 풀려고 한 게 잘못이었던 듯 하다...

- 나가는 순간 요금계산하려고 막 삽질하느라 상당히 오래걸린 문제...

저작자표시 (새창열림)

'프로그래머스' 카테고리의 다른 글

프로그래머스 43236. 징검다리  (0) 2024.11.03
프로그래머스 42586. 기능개발  (0) 2023.11.15
프로그래머스 72413. 합승 택시 요금  (0) 2023.11.08
프로그래머스 42898. 등굣길  (0) 2023.11.07
프로그래머스 42883. 큰 수 만들기  (0) 2023.11.02
'프로그래머스' 카테고리의 다른 글
  • 프로그래머스 43236. 징검다리
  • 프로그래머스 42586. 기능개발
  • 프로그래머스 72413. 합승 택시 요금
  • 프로그래머스 42898. 등굣길
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (382)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    Til
    항해99
    99클럽
    코딩테스트준비
    개발자취업
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
프로그래머스 92341. 주차 요금 계산
상단으로

티스토리툴바