- 알고리즘/프로그래머스
프로그래머스 카카오 방금그곡 (java)
더모어더베러
2023. 10. 3. 15:53
문제
https://school.programmers.co.kr/learn/courses/30/lessons/17683
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
1. 음이 1분에 한개씩 재생되기 때문에 방금그곡 서비스에서 제공 하는 음표를 재생시간에 맞게 조정해줍니다.
2. 음표를 가공후 내가 기억하고 있는 음과 같은지 확인합니다.
3. 음이 같을때 재생시간이 긴것을 반환합니다.
import java.util.*;
class Solution {
public String solution(String m, String[] musicinfos) {
String result = "";
int maxTime = 0;
for (int i=0 ; i< musicinfos.length ; i++) {
String[] musicinfo = musicinfos[i].split(",");
int playingTime = getTime(musicinfo[0], musicinfo[1]);
String music = musicinfo[3];
// 음 하나당 1분 재생되기 때문에 플레이시간보다 음이 적다면 추가해주고 시간만큼만 있도록 자른다.
while (music.length() < playingTime) {
music += music;
}
music.substring(0, playingTime);
// 방송국 음악정보를 시간에 맞게 완성해주고 내가 알고 있는 음이 포함되어 있는지 확인
// 1. 음이 같은 노래가 중복된다면 플레이시간이 가장긴 시간을 반환한다.
// 2. 음시간도 같다면 먼저 입력된 값을 출력 한다.
if (music.contains(m)) {
if (maxTime < playingTime) {
maxTime = playingTime;
result = musicinfo[2];
}
}
}
return result;
}
static public int getTime(String str1, String str2) {
String[] t1 = str1.split(":");
String[] t2 = str2.split(":");
int h1 = Integer.parseInt(t1[0])*60;
int h2 = Integer.parseInt(t2[0])*60;
int m1 = Integer.parseInt(t1[1]);
int m2 = Integer.parseInt(t2[1]);
int result = (h2+m2) - (h1+m1);
return result;
}
}