이 영역을 누르면 첫 페이지로 이동
자라자 블로그의 첫 페이지로 이동

자라자

페이지 맨 위로 올라가기

[프로그래머스] 셔틀버스

자라자

[프로그래머스] 셔틀버스

  • 2021.12.08 12:33
  • PS/Programmers

프로그래머스로고

[문제 링크]

https://programmers.co.kr/learn/courses/30/lessons/17678?language=python3

[입출력 예]

n t m timetable answer
1 1 5 ["08:00", "08:01", "08:02", "08:03"] "09:00"
2 10 2 ["09:10", "09:09", "08:00"] "09:09"
2 1 2 ["09:00", "09:00", "09:00", "09:00"] "08:59"
1 1 5 ["00:01", "00:01", "00:01", "00:01", "00:01"] "00:00"
1 1 1 ["23:59"] "09:00"
10 60 45 ["23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"] "18:00"

[소스코드 1차시도 91.7]

def time_to_minute(time):
return (int(time[:2])*60+int(time[3:]))
def minute_to_time(minute):
return (str(minute//60).zfill(2)+":"+str(minute%60).zfill(2))
def solution(n, t, m, timetable):
timetable=list(map(time_to_minute,sorted(timetable,reverse=True)))
bus = 540
# n이 1보다 클 경우, 마지막 버스로 이동해야 한다.
# m인승이므로 탈 수 있는 인원이 있으면 m번씩 끊어 태워보낸다.
while(n>1):
for i in range(m):
if timetable[-1] < bus:
timetable.pop()
else:break
n-=1
bus+=t
#대기자가 없으면 버스시간 리턴
if not timetable:
return minute_to_time(bus)
#먄약 대기자들이 전부 버스보다 늦게 올 경우, 버스도착시간 리턴
if (timetable[-1]>bus):
return minute_to_time(bus)
else:
# 마지막 버스에서 자리가 m개 남아있다면
while(m>1):
if (timetable and timetable[-1]<=bus):
timetable.pop()
m-=1
else:
break
# timetable이 비었거나 m=1이거나 m>1이지만 모두 못 타는 상황.
print(m, timetable)
if m==1 and timetable and timetable[-1]<=bus: return minute_to_time(timetable[-1]-1)
else:
return minute_to_time(bus)

[소스코드 2차시도 100]

def time_to_minute(time):
return (int(time[:2])*60+int(time[3:]))
def minute_to_time(minute):
return (str(minute//60).zfill(2)+":"+str(minute%60).zfill(2))
def solution(n, t, m, timetable):
timetable=list(map(time_to_minute,sorted(timetable,reverse=True)))
bus = 540
# n이 1보다 클 경우, 마지막 버스로 이동해야 한다.
# m인승이므로 탈 수 있는 인원이 있으면 m번씩 끊어 태워보낸다.
# 등호 안붙여서 틀린 것이었음...
# 일부 테케가 틀렸을 때는 한줄씩 틀렸다고 가정하고 생각해보기
while(n>1):
for i in range(m):
if timetable[-1] <= bus:
timetable.pop()
else:break
n-=1
bus+=t
#대기자가 없으면 버스시간 리턴
if not timetable:
return minute_to_time(bus)
#먄약 대기자들이 전부 버스보다 늦게 올 경우, 버스도착시간 리턴
if (timetable[-1]>bus):
return minute_to_time(bus)
else:
# 마지막 버스에서 자리가 m개 남아있다면
while(m>1):
if (timetable and timetable[-1]<=bus):
timetable.pop()
m-=1
else:
break
# timetable이 비었거나 m=1이거나 m>1이지만 모두 못 타는 상황.
print(m, timetable)
if m==1 and timetable and timetable[-1]<=bus: return minute_to_time(timetable[-1]-1)
else:
return minute_to_time(bus)

'PS > Programmers' 카테고리의 다른 글

[프로그래머스] 불량사용자 파이썬 풀이  (0) 2021.12.10
[프로그래머스] 보석 쇼핑 파이썬 풀이  (0) 2021.12.09
[프로그래머스] 자물쇠와 열쇠 파이썬  (0) 2021.11.28
[프로그래머스] 순위  (0) 2021.11.27
[프로그래머스] 네트워크 파이썬  (0) 2021.11.27

댓글

댓글을 사용할 수 없습니다.

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [프로그래머스] 불량사용자 파이썬 풀이

    [프로그래머스] 불량사용자 파이썬 풀이

    2021.12.10
  • [프로그래머스] 보석 쇼핑 파이썬 풀이

    [프로그래머스] 보석 쇼핑 파이썬 풀이

    2021.12.09
  • [프로그래머스] 자물쇠와 열쇠 파이썬

    [프로그래머스] 자물쇠와 열쇠 파이썬

    2021.11.28
  • [프로그래머스] 순위

    [프로그래머스] 순위

    2021.11.27
다른 글 더 둘러보기

정보

자라자 블로그의 첫 페이지로 이동

자라자

  • 자라자의 첫 페이지로 이동

검색

메뉴

  • 🏠 HOME
  • 💡 ABOUT
  • 💻 GITHUB

카테고리

  • 분류 전체보기 (91)
    • Tech Note (3)
    • Dev Log (11)
    • Study Log (11)
    • Settings (3)
    • PS (53)
      • Programmers (21)
      • BOJ (32)
    • Diary (10)

인기 글

공지사항

태그

  • ㅣ
  • 공식문서읽기
  • 리액트

정보

자라자의 자라자

자라자

자라자

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © 자라자. Designed by Fraccino.

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.