
https://programmers.co.kr/learn/courses/30/lessons/17678?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr



Solution
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def shuttle_time(n, t): | |
shuttle = [] | |
shuttle.append("09:00") | |
hour = 9 | |
minute = 0 | |
for i in range(n-1): | |
minute += t | |
if minute >= 60: | |
hour += 1 | |
minute = 0 | |
if hour == 9: | |
if minute < 10: | |
tmp = "09:0" + str(minute) | |
shuttle.append(tmp) | |
else: | |
tmp = "09:" + str(minute) | |
shuttle.append(tmp) | |
else: | |
if minute < 10: | |
tmp = str(hour) + ":0" + str(minute) | |
else: | |
tmp = str(hour) + ":" + str(minute) | |
shuttle.append(tmp) | |
return shuttle | |
def solution(n, t, m, timetable): | |
shuttle = shuttle_time(n, t) | |
timetable.sort() | |
for i in range(n): | |
cnt = 0 | |
if len(timetable) < m: | |
return shuttle[-1] | |
if i == n-1: | |
if timetable[0] > shuttle[i]: | |
return shuttle[i] | |
hour, minute = timetable[m-1].split(':') | |
hour, minute = int(hour), int(minute) | |
minute -= 1 | |
if minute == -1: | |
minute = 59 | |
hour -= 1 | |
if hour < 10: | |
if minute < 10: | |
return "0" + str(hour) + ":0" + str(minute) | |
else: | |
return "0" + str(hour) + ":" + str(minute) | |
else: | |
if minute < 10: | |
return str(hour) + ":0" + str(minute) | |
else: | |
return str(hour) + ":" + str(minute) | |
for j in range(m-1, -1, -1): | |
if timetable[j] <= shuttle[i]: | |
timetable.pop(j) |
문제 유형 : 문자열, 구현
처음에 입출력 예제 2번이 좀 헷갈렸지만 바로 이해하고 구현을 했다.
했지만,,테스트 케이스 5번과 16번을 통과 못해서 고생했다.
백준은 나와있는 입출력 예제 통과하면 웬만하면 맞던데 프로그래머스는
테스트 케이스를 공개를 안해서 더 까다로운 것 같다.
5번과 16번을 통과 못 한 이유는 timetable에서 셔틀시간보다 작을 때 값을 빼는 부분을 잘못 구현한 것 이다..
인덱스를 0부터 비교하면서 값을 빼니까 다른 TEMP 리스트를 하나 더 생성해야 했고
그러면서 코드가 복잡해지고 깊은 나락으로 빠졌었다.
인덱스를 m-1부터 반대로 비교하면 TEMP 생성 필요없이 훨씬 깔끔하게 구현 가능하다.
정답 맞추고 다른 사람들이 푼 풀이 보니까 시간을 저렇게 단순무식하게 처리한 사람은 나 밖에 없는 것 같다.
datetime이라는 모듈이 있는 지도 몰랐고 더 깔끔한 방법도 있는데 그건 생각도 못했다.
아직 많이 부족한 것 같다.

'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 괄호 변환 / Python / 2020 KAKAO BLIND RECRUITMENT (0) | 2020.04.15 |
---|---|
[프로그래머스] 문자열 압축 / Python / 2020 KAKAO BLIND RECRUITMENT (0) | 2020.04.15 |
[프로그래머스] 캐시(LRU) / Python / 2018 KAKAO BLIND RECRUITMENT (0) | 2020.04.15 |
[프로그래머스] 다트게임 / Python / 2018 KAKAO BLIND RECRUITMENT (0) | 2020.04.15 |
[프로그래머스] 비밀지도 / Python / 2018 KAKAO BLIND RECRUITMENT (0) | 2020.04.14 |
,