#이 들어간 음들은 replace를 사용하여 #까지 포함해서 한단어로 바꿔주었다.
String [] shop = {"C#","D#","F#","G#","A#"}; for(int i=0; i<shop.length; i++){ m=m.replace(shop[i],String.valueOf(i)); } for(int j=0; j<shop.length; j++){ musicinfo[3]=musicinfo[3].replace(shop[j],String.valueOf(j)); }
재생시간은 음악의 종료시간 - 시작시간인데 계산의 편의성을 위해 분으로 환산해서 계산했다.
int playtime = Integer.parseInt(musicinfo[1].split(":")[0])*60+Integer.parseInt(musicinfo[1].split(":")[1]) - (Integer.parseInt(musicinfo[0].split(":")[0])*60+Integer.parseInt(musicinfo[0].split(":")[1]));
재생시간만큼은 멜로디가 계속 나와야 하므로
temp라는 변수에다가 재생시간동안 나오는 음들은 담아주었다.
이때 int idx = j%musicinfo[3].length(); 를 사용해서
재생시간보다 멜로디가 먼저 끝나도 처음부터 다시 담을수 있도록 했다.for(int j=0; j<playtime;j++){ int idx = j%musicinfo[3].length(); temp+=musicinfo[3].substring(idx,idx+1); }
import java.util.*;
class Solution {
public String solution(String m, String[] musicinfos) {
String answer = "";
String [] shop = {"C#","D#","F#","G#","A#"};
int savetime=0;
for(int i=0; i<shop.length; i++){
m=m.replace(shop[i],String.valueOf(i));
}
for(int i=0; i<musicinfos.length;i++){
String [] musicinfo = musicinfos[i].split(",");
String temp="";
for(int j=0; j<shop.length; j++){
musicinfo[3]=musicinfo[3].replace(shop[j],String.valueOf(j));
}
int playtime = Integer.parseInt(musicinfo[1].split(":")[0])*60+Integer.parseInt(musicinfo[1].split(":")[1]) - (Integer.parseInt(musicinfo[0].split(":")[0])*60+Integer.parseInt(musicinfo[0].split(":")[1]));
for(int j=0; j<playtime;j++){
int idx = j%musicinfo[3].length();
temp+=musicinfo[3].substring(idx,idx+1);
}
if(temp.contains(m)){
if(answer.equals("")){
answer = musicinfo[2];
savetime= playtime;
}else{
if(playtime>savetime){
answer=musicinfo[2];
savetime=playtime;
}
}
}
}
if("".equals(answer)){
answer = "(None)";
}
return answer;
}
}