광규니
광규니네
광규니
전체 방문자
오늘
어제
  • 분류 전체보기 (154)
    • 알고리즘 (100)
      • 알고리즘 개념 (2)
      • 문제 풀이 (96)
    • 주절주절 (19)
      • 자격증, 활동 후기 (4)
      • 전시회 후기 (3)
      • 이모저모 (2)
      • 회고 (3)
      • 뜨럼 (7)
    • 운영체제 (9)
    • 개발 지식 (9)
      • Apple Watch (4)
      • MySQL (2)
      • Eclipse (1)
      • XCode (1)
    • 네트워크 공부 (1)
    • 데이터베이스 공부 (5)
    • Java 공부 (7)
    • TMP (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 운영체제
  • 백준
  • 합주
  • 애플워치 앱
  • 다이나믹 프로그래밍
  • 알고리즘
  • 자바
  • 개념
  • OS
  • 프로그래머스
  • 구현
  • 오블완
  • BOJ
  • DP
  • 파이썬
  • 드린이
  • 애플워치 앱 만들기
  • 티스토리챌린지
  • 컴퓨터 사이언스
  • BFS

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
광규니

광규니네

알고리즘/문제 풀이

[Python/파이썬 프로그래머스] 광고 삽입

2021. 5. 19. 00:16
반응형

https://programmers.co.kr/learn/courses/30/lessons/72414

 

코딩테스트 연습 - 광고 삽입

시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11

programmers.co.kr

 

풀이

도저히 몰라서 찾아본 답

 

가장 풀이 해석이 잘 돼있는 사이트입니다

https://dev-note-97.tistory.com/156

 

[프로그래머스] 광고 삽입 / Python

문제주소 :programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의..

dev-note-97.tistory.com

# 프로그래머스 광고삽입
 

def str_to_int(time):
    h,m,s=time.split(':')
    return int(h)*3600+int(m)*60+int(s)

def int_to_str(time):
    h=time//3600
    h='0'+str(h) if h<10 else str(h)
    time=time%3600
    m=time//60
    m='0'+str(m) if m<10 else str(m)
    time=time%60
    
    s='0'+str(time) if time<10 else str(time)
    
    return h+':'+m+':'+s

def solution(play_time, adv_time, logs):
    # 길이를 시간으로
    play_time=str_to_int(play_time)
    adv_time=str_to_int(adv_time)

    # 0부터 play_time +1 까지 0으로 초기화한 뒤
    all_time=[0 for i in range(play_time+1)]
    #log 들을 따서 start, end에 1,-1 표시
    for i in logs:
        start,end=i.split('-')
        # all_time에 시작점과 끝점 표시
        start=str_to_int(start)
        end=str_to_int(end)
        all_time[start]+=1
        all_time[end]-=1
    # start, end 에 사이(0)를 빈 곳을 메꾸는 용도
    for i in range(1,len(all_time)):
        all_time[i]=all_time[i]+all_time[i-1]
    # log들의 중복값을 더하는 용도
    for i in range(1,len(all_time)):
        all_time[i]=all_time[i]+all_time[i-1]

    most_view=0
    max_time=0

    for i in range(adv_time-1,play_time):

        if i >=adv_time:
            # i부터 i-adv_time까지 most_view가 큰게 있으면 값 바꿔줌
            if most_view<all_time[i]-all_time[i-adv_time]:
                most_view=all_time[i]-all_time[i-adv_time]
                max_time=i-adv_time+1
        # adv_time-1 부터 시작해서 max time을 adv_time 길이까지 설정
        else:
            if most_view<all_time[i]:
                most_view=all_time[i]
                max_time=i-adv_time+1

    return int_to_str(max_time)

몰랐던 거...

일단 play time을 기간으로 바꿔서 리스트로 정의해야되는거....

그리고 start,end를 1,-1 표시해줘서 all_time 인덱스에서 표시가능하게 만든거

and most_view, max_time 값 비교해주는거

 

구현이 어려운 문제인거 같다

반응형
저작자표시

'알고리즘 > 문제 풀이' 카테고리의 다른 글

[Python/파이썬 백준 1339] 단어 수학  (0) 2021.06.02
[Python/파이썬 1107 백준] 리모컨  (0) 2021.05.20
[Python/파이썬 프로그래머스] 메뉴 리뉴얼  (0) 2021.05.10
[Python/파이썬 프로그래머스] 보석 쇼핑  (0) 2021.05.06
[Python/파이썬 프로그래머스] 키패드 누르기  (0) 2021.05.04
    '알고리즘/문제 풀이' 카테고리의 다른 글
    • [Python/파이썬 백준 1339] 단어 수학
    • [Python/파이썬 1107 백준] 리모컨
    • [Python/파이썬 프로그래머스] 메뉴 리뉴얼
    • [Python/파이썬 프로그래머스] 보석 쇼핑
    광규니
    광규니
    공부 및 일상 올리기~

    티스토리툴바