일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 미세먼지 안녕!
- 감소하는 수
- SW Expert Academy
- 보석 쇼핑
- QueryDSL 기초
- 프로그래머스
- 빛의 경로 사이클
- 15686번
- 14499번
- 9095번
- 수식 최대화
- 16234번
- 어른 상어
- 1789번
- 베스트엘범
- 파이썬
- 17144번
- 거울 설치
- 백준 알고리즘
- 12865번
- HTML 기초
- 2020 카카오 인턴십
- 12869번
- 키패드 누르기
- 19238번
- 스타트 택시
- SW ExpertAcademy
- python
- 1038번
- 경주로 건설
Archives
- Today
- Total
보물창고 블로그
2018 KAKAO BLINDRECRUITMENT 1차 추석 트래픽 본문
728x90
문제 링크:https://programmers.co.kr/learn/courses/30/lessons/17676
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제의 핵심은 시간의 대소 비교를 어떻게 할 것인가이다. 나는 파이썬의 datetime 모듈을 사용하여 이를 해결하였다. 먼저 split() 함수를 사용하여 lines의 line들을 공백을 기준으로 나누고, 실행된 시간을 duration에 저장하고, strptime함수를 사용하여 시작시간과 끝나는 시간을 계산하고, 개수가 변하는 기준점은 각 요청이 시작되는 지점과 끝나는 지점이므로, 요청이 시작되는 지점에서의 0.999초까지의 시간 안에 각 요청이 처리된 기간 안에 포함돼있는지 여부에 따라 count를 늘려서 모든 요청과 비교하고, count값이 현재 answer값보다 클 때 answer값을 경신하도록 하였다.
import datetime
def solution(lines):
tt = []
check = []
answer = 0
for i in lines:
i = i.split()
duration = float(i[2][:-1])
end = datetime.datetime.strptime(" ".join(i[:2]), "%Y-%m-%d %H:%M:%S.%f")
start = end - datetime.timedelta(seconds=(duration - 0.001))
tt.append([start, end])
check.append(start)
check.append(end)
for c in check:
count = 0
for w in tt:
if c + datetime.timedelta(seconds=0.999) < w[0]:
continue
elif c > w[1]:
continue
else:
count += 1
if count > answer:
answer = count
return answer
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
2018 KAKAO BLINDRECRUITMENT 1차 비밀지도 (0) | 2020.03.26 |
---|---|
2018 KAKAO BLINDRECRUITMENT 1차 캐시 (0) | 2020.03.26 |
2018 KAKAO BLINDRECRUITMENT 1차 프렌즈4블록 (0) | 2020.03.26 |
2018 KAKAO BLINDRECRUITMENT 1차 셔틀버스 (0) | 2020.03.26 |
2018 KAKAO BLINDRECRUITMENT 1차 뉴스 클러스터링 (0) | 2020.03.26 |
Comments