https://school.programmers.co.kr/learn/courses/30/lessons/17683
총 음 -> 끝나는 시간 - 시작시간 -> HH :MM 이기때문에 -> HH 끼리 뺀 숫자 * 60을 MM끼리 뺀 값끼리 더해준다.
음악의 길이보다 긴경우 -> 그만큼 반복
A# => a로변환
D# => b로 변환
C# => c로 변환
F# = f 로변환
G# = g로 변환
주의점
-> 첫번째 곡부터 비교해서 진행
쪼개서 문자열로 만들고
box[시작시간 , 끝나는시간 , 제목, 음]
앞의 두부분
String start[] = box[0].split(":");
String end[] = box[1].split(":");
int playtime = 위의 계산값
-> 분 먼저 계산
만약 찾고있는 음을 포함하고있는경우
checking => false 일경우 현재 존재하지않으므로 넣어둔다.
그외에 음의 플레이타임이 길 경우 바꿔줌.
단순 구현
class Solution {
public String solution(String m, String[] musicinfos) {
String answer = "";
musics check_music = new musics();
//변환
m = translate(m);
for(int idx = 0; idx < musicinfos.length;idx++){
//전부 분리
String comment[] = musicinfos[idx].split(",");
String start[] = comment[0].split(":");
String end[] = comment[1].split(":");
String Music_subject = comment[2];
//변환
String pitch = translate(comment[3]);
//시간 체크
int start_hour = Integer.parseInt(start[0]);
int start_min = Integer.parseInt(start[1]);
int end_hour = Integer.parseInt(end[0]);
int end_min = Integer.parseInt(end[1]);
if( end_min < start_min){
end_hour -= 1;
end_min+=60;
}
//플레이타임 체크
int check_time = (end_hour - start_hour) *60 + (end_min - start_min);
System.out.println("플레이타임 : " + check_time);
String Music_pitch="";
int Music_length = pitch.length();
//음의 길이보다 작거나 같은 경우 자르기
if(Music_length >= check_time){
Music_pitch = pitch.substring(0,check_time);
}
//음 길이보다 긴 경우 자르기
else {
int per = check_time / Music_length;
int div = check_time % Music_length;
Music_pitch = pitch.repeat(per) + pitch.substring(0,div);
}
//음을 포함하고 있는 경우
if(Music_pitch.contains(m))
{
//checking이 false인경우 없는 경우다.
if(!check_music.checking){
check_music.checking = true;
check_music.playtime = check_time;
check_music.name = Music_subject;
continue;
}
//만약 플레이타임이 더 긴게 등장한경우 변경
if(check_time > check_music.playtime){
check_music.playtime = check_time;
check_music.name = Music_subject;
}
}
}
//없는경우
if(!check_music.checking)
answer = "(None)";
else
answer = check_music.name;
return answer;
}
//음악 저장용
class musics{
boolean checking = false;
int playtime;
String name;
}
//변환
public String translate(String alpa){
alpa = alpa.replace("A#" ,"a");
alpa = alpa.replace("C#", "c");
alpa = alpa.replace("D#","d");
alpa = alpa.replace("F#","f");
alpa = alpa.replace("G#","g");
return alpa;
}
}