-
programmers.co.kr/learn/courses/30/lessons/17683
이것도 시간을 활용한 문제
아직 코테를 그렇게 많이 보진 않았지만 대기업 코테에서는 시간을 문자열 처리할 수 있는지를 많이 보는 것 같다
그래서 C++이 그런 코테 스타일에는 적합하지 않다고 느꼈고, 파이썬의 datetime 모듈에 대한 연습을 하고 있다.
datetime 모듈을 이용하면 문자열을 datetime 객체로 변환시킬 수 있고(strptime메소드), timedelta를 이용해서 시간 차를 구할 수도 있고, 해당 객체를 다시 문자열로 변화시킬 수 있다(strftime메소드).
이번 문제에서는 그걸 이용해서 시간 차가 몇 분인지 구해주었고, 해당 minute만큼 전체 음을 multiply해서 그 안에 찾으려는 음절이 있는지 검사해줬다.
경계값 체크때문에 조금 헤맸던 문제
import datetime import re import math def solution(lyrics, musicinfos): answer = ['',0] for st in musicinfos: info=st.split(',') t=[] for i in range(2): t.append(datetime.datetime.strptime(info[i],'%H:%M')) pt=round((t[1]-t[0]).seconds/60) melody=[] for i in info[3]: if i=='#': melody[-1]+='#' else: melody.append(i) M='' for i in range(pt): M+=melody[i%len(melody)] for i in range(len(M)-len(lyrics)+1): if M[i]=='#':continue t=M[i:i+len(lyrics)] if t==lyrics: if i<len(M)-len(lyrics) and M[i+len(lyrics)]=='#':continue if pt>int(answer[1]): answer[0]=info[2] answer[1]=pt if answer[0]=='': return '(None)' return answer[0]
'Problem Solving > Programmers' 카테고리의 다른 글
[Programmers]2018 KAKAO BLIND RECRUITMENT: [3차] 파일명 정렬(C++) (0) 2021.03.25 [Programmers]2020 카카오 인턴십: 수식 최대화/문자열(Python) (0) 2021.03.13 [Programmers]2018 KAKAO BLIND RECRUITMENT: [1차] 셔틀버스 (0) 2021.02.24 [Programmers] 2018 KAKAO BLIND RECRUITMENT[3차] : 압축 (0) 2021.02.13 [Programmers] 2018 KAKAO BLIND RECRUITMENT[3차]: n진수 게임 (0) 2021.02.13