[알고리즘] 방금그곡

강인호·2022년 10월 5일
0

알고리즘 문제풀이

목록 보기
28/39

처음에는 문제 이해조차 힘들었지만 접근자체가 아예 불가능한 느낌은 아닌것같아서 정말 지저분할수도 있지만 하나하나 차근차근 접근해보았다.

일단 #을 변환해주었다. (4번째줄)

m을 쪼개고 for문으로 비교해가면서 소문자로 치환후 다시 #을 날리고 합쳐주었다.

그 다음엔 시간을 구했다. (18번째줄)

뒤의 시간에서 앞의 시간을 빼주었다. 빼줄때는 :을 기준으로 쪼갠다음 분끼리 빼주고 시간끼리 빼준다음 시간끼리의 계산에는 60을 곱해주고 서로 더해주었다.

그 다음 노래타이틀배열, 노래음 배열을 각각 만들어서 넣어주었다.

노래 음 배열에서도 똑같이 #을 제거해주었다. 하지만 배열에 한번 더 감싸져있어서 추가작업이 필요했다.

그 다음 실제로 흘러나온 음을 구하는 작업을 했는데,

시간/곡의길이 (올림처리) 만큼 repeat을 하고 올림처리 한 부분에 대해서 곡의 길이만큼 한번 더 잘라주었다.

그 다음 최종적으로 흘러나온 음을 검색해서 일치하면 answer 배열에 넣어주었다.

"조건이 일치하는 음악이 여러 개일 때에는 라디오에서 재생된 시간이 제일 긴 음악 제목을 반환한다. 재생된 시간도 같을 경우 먼저 입력된 음악 제목을 반환한다."

조건을 일치하기 위해서 Math.max함수로 최대값을 찾아낸 후 그 최대값이 포함된 인덱스값을 검색을 했다.

하지만 최대값이 중복이 될 경우 Math.max함수가 제대로 작동하지 않아서 new Set으로 중복을 제거했다.

먼저 입력된 음악 제목의 조건은 처음부터 순차적으로 배열에 넣었기 때문에

최대값이 포함된 인덱스값을 검색만 하고 길이가 0일때 (None)을 반환하는 조건만 추가해줘서 맞추었다.

21번 30번이

"조건이 일치하는 음악이 여러 개일 때에는 라디오에서 재생된 시간이 제일 긴 음악 제목을 반환한다. 재생된 시간도 같을 경우 먼저 입력된 음악 제목을 반환한다."

조건에 관한 테스트케이스여서 한번 막혔었다.

정말 이문제 하나만 3시간정도 잡은것 같은데 뭔가 막히다가 번뜩이는것보다는 시간 투자한 만큼 한발짝 한발짝 나아가는

느낌이였어서 그래도 재밌었다.

0개의 댓글