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

자라자

페이지 맨 위로 올라가기

프로그래머스_추석트래픽

자라자

프로그래머스_추석트래픽

  • 2021.10.14 21:23
  • PS/Programmers
프로그래머스로고

[문제 링크]

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

[입출력 예제]

  • 각 문자열은 요청에 대한 응답 완료시간S와 처리시간 T이다.
  • 처리 시간은 끝 시간을 포함하기 때문에, 응답 시작시간은 완료시간-처리시간 + 0.001초이다.

이런 상황에서 요청이 가장 많은 1초를 찾는 것이 목표이다.

[소스코드]

def solution(lines):
# end == Response Completion Time 응답 완료 시각
# start == Response Beginning Time 응답 시작 시각
# processing == Processing Time 응답 처리시간
answer = 0
start_times=[] #1. start와 end를 따로 모은다.
end_times=[]
for line in lines:
start, end = to_miliseconds(line)
start_times.append(start)
end_times.append(end)
for i in range(len(lines)):
cnt=0
cur_end_time=end_times[i] # 2. 끝나는 시간 기준으로 순회한다.
# 응답완료시간 S를 기준으로 오름차순으로 정렬되어있기 때문이다.
# 인덱스가 크면 무조건 늦게 끝난다.
# 시간 기준으로 연속적으로 세는 게 아니라 완료시간 기준으로 띄엄띄엄 센다.
for j in range(i, len(lines)):
if cur_end_time > start_times[j]-1000: # 3. 한 방향으로만 세는 것이 중요한데,
# 세는 시점보다 1초 후 방향으로만 센다. 따라서 이전에 끝난 것들은 고려할 필요X
# '처리중' 이란 말은 '시작했다'는 말과 같다. 그리고 무조건 cur보다 나중에 끝난다
# 따라서 cur보다 뒤에 오는 것들 중 시작시간이 1초 이내로 차이나는 것 cnt증가
cnt+=1
answer =max(answer,cnt)
return answer
def to_miliseconds(line):
time=line.split(" ")
hours=int(time[1][:2])
minutes=int(time[1][3:5])
seconds=int(time[1][6:8])
miliseconds=float(time[1][8:])
end = hours*3600*1000+minutes*60*1000+seconds*1000+miliseconds*1000
start = end-float(time[2][:-1])*1000+1
return[start,end]
def solution(lines): # end == Response Completion Time # start == Response Beginning Time # processing == Processing Time answer = 0 start_times=[] end_times=[] for line in lines: start, end = to_miliseconds(line) start_times.append(start) end_times.append(end) for i in range(len(lines)): cnt=0 cur_end_time=end_times[i] for j in range(i, len(lines)): if cur_end_time > start_times[j]-1000: cnt+=1 answer =max(answer,cnt) return answer def to_miliseconds(line): time=line.split(" ") hours=int(time[1][:2]) minutes=int(time[1][3:5]) seconds=int(time[1][6:8]) miliseconds=float(time[1][8:]) end = hours*3600*1000+minutes*60*1000+seconds*1000+miliseconds*1000 start = end-float(time[2][:-1])*1000+1 return[start,end] Eng



def solution(lines): # end == 응답 완료 시간 # start == 응답 시작 시간 # processing == 처리 시간 answer = 0 start_times=[] end_times=[] for line in lines: start, end = to_miliseconds(line) start_times.append(start) end_times.append(end) for i in range(len(lines)): cnt=0 cur_end_time=end_times[i] for j in range(i, len(lines)): if cur_end_time > start_times[ j]-1000: cnt+=1 answer =max(answer,cnt) return answer def to_miliseconds(line): time=line.split(" ") hours=int(time[1][:2]) minutes=int( time[1][3:5]) seconds=int(time[1][6:8]) miliseconds=float(time[1][8:]) end = 시간*3600*1000+분*60*1000 +seconds*1000+miliseconds*1000 start = end-float(time[2][:-1])*1000+1 return[start,end]
 
 
 
 
 

 

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

프로그래머스_정수삼각형  (0) 2021.10.20
[프로그래머스] 입국심사 파이썬 풀이  (0) 2021.10.18
프로그래머스_표_편집  (0) 2021.09.09
프로그래머스_N개의최소공배수_파이썬  (0) 2021.09.09
프로그래머스_신규아이디추천_파이썬  (0) 2021.09.09

댓글

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

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 프로그래머스_정수삼각형

    프로그래머스_정수삼각형

    2021.10.20
  • [프로그래머스] 입국심사 파이썬 풀이

    [프로그래머스] 입국심사 파이썬 풀이

    2021.10.18
  • 프로그래머스_표_편집

    프로그래머스_표_편집

    2021.09.09
  • 프로그래머스_N개의최소공배수_파이썬

    프로그래머스_N개의최소공배수_파이썬

    2021.09.09
다른 글 더 둘러보기

정보

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

자라자

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

검색

메뉴

  • 🏠 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 + /
⇧ + /

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