๋–ตํ˜ธ
seongho'Dev
๋–ตํ˜ธ
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (116)
    • ํšŒ๊ณ  (2)
    • Algorithm (74)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (65)
      • ๋ฐฑ์ค€(BOJ) (2)
      • Note (7)
    • ๊ธฐ์ˆ ๋…์„œ (25)
      • Clean Code (11)
      • ์ž๋ฐ”์˜ ์ •์„ (8)
      • ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (6)
    • Computer Science (1)
      • Operating System (1)
    • Typescript (1)
    • JAVA (0)
    • Spring (6)
      • JPA (6)
    • AWS (2)
    • Git (2)
    • Etc (2)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • github

ํ‹ฐ์Šคํ† ๋ฆฌ

ํƒœ๊ทธ

  • ์™„์ „ํƒ์ƒ‰
  • ๊ตฌํ˜„
  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • Clean Code
  • ํด๋ฆฐ์ฝ”๋“œ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ์นด์นด์˜ค ์ฝ”ํ…Œ
  • ์ž๋ฐ”์˜ ์ •์„
  • JPA
hELLO ยท Designed By ์ •์ƒ์šฐ.
๋–ตํ˜ธ

seongho'Dev

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv2 - ์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐ (2022 KAKAO BLIND RECRUITMENT)
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv2 - ์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐ (2022 KAKAO BLIND RECRUITMENT)

2022. 7. 2. 18:08
728x90

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐ

[180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000]

programmers.co.kr

๐Ÿ“‚ ๋ถ„๋ฅ˜

๊ตฌํ˜„

๐Ÿ’ก ํ’€์ด

๋”•์…”๋„ˆ๋ฆฌ ์‚ฌ์šฉ๋ฒ•์ด ์ต์ˆ™ํ•˜์ง€ ์•Š์•„ ๊ณ ์ƒํ–ˆ์ง€๋งŒ ๋‹จ์ˆœ ๊ตฌํ˜„ ๋ฌธ์ œ๋กœ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

์ ‘๊ทผ ๋ฐฉ์‹

  • ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฐจ๋ฒˆํ˜ธ ๋ณ„๋กœ ์ž…/์ถœ์ฐจ ๊ธฐ๋ก์„ ์ €์žฅํ•œ๋‹ค.
  • ์ž…/์ถœ์ฐจ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ๋ถ„ ๋‹จ์œ„๋กœ ํ™˜์‚ฐํ•˜์—ฌ ๋”•์…”๋„ˆ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค.
  • stack์„ ์ด์šฉํ•ด์„œ ์ด ์ฃผ์ฐจ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•œ๋‹ค.
    • ๋งˆ์ง€๋ง‰ ์ถœ์ฐจ ๊ธฐ๋ก์ด ์—†๋‹ค๋ฉด 23:59์— ์ถœ์ฐจ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค๊ณ  ๋‚˜์™€์žˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ stack์ด ๋น„์–ด์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ, LAST_EXIT_TIME์—์„œ ๋นผ์ฃผ์–ด ์ด ์ฃผ์ฐจ ์‹œ๊ฐ„์— ๋”ํ•ด์ค€๋‹ค.

๐Ÿ’ป ์ฝ”๋“œ

from math import ceil

LAST_EXIT_TIME = 1439


def hourToMinutes(time):
    h, m = map(int, time.split(':'))
    return h * 60 + m


def solution(fees, records):
    answer = []
    car = {}
    dt, df, ut, uf = fees

    for r in records:
        time, number, op = r.split()

        if number in car:
            car[number].append((hourToMinutes(time), op))
        else:
            car[number] = [(hourToMinutes(time), op)]

    car_list = list(car.items())
    car_list.sort(key=lambda x: x[0])

    for cars in car_list:
        time = 0
        stack = []

        for car in cars[1]:
            if car[1] == 'IN':
                stack.append(car[0])
            else:
                time += car[0] - stack.pop()

        if len(stack) != 0:
            time += LAST_EXIT_TIME - stack.pop()

        if time <= dt:
            answer.append(df)
        else:
            answer.append(df + ceil((time - dt) / ut) * uf)

    return answer
728x90
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    ๋–ตํ˜ธ
    ๋–ตํ˜ธ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”