programmers_[3차] 방금그곡_java
2023. 4. 26. 11:35ㆍAlgorithm/Programmers
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17683#
class Solution {
public String solution(String m, String[] musicinfos) {
String answer = "(None)";
int answerTime = -1;
String startTime = "23:59";
int musicInfosLength = musicinfos.length;
String melody = makeMusic(m);
for(int i = 0; i<musicInfosLength; i++){
String[] musicInfo = musicinfos[i].split(","); // 시작시간, 종료시간, 제목, 악보
int timeDiff = calMin(musicInfo[0], musicInfo[1]); // 라디오에서 재생된 시간
String music = makeMusic(musicInfo[3]);
if(timeDiff < music.length()){ // 재생 시간 < 음악길이 -> 악보 자르기
music = music.substring(0, timeDiff);
}
if(isContain(melody, music)){ // 적합한 경우
if(timeDiff > answerTime){ // 재생시간이 길거나 먼저 나온 경우
answer = musicInfo[2];
answerTime = timeDiff;
}
}
}
return answer;
}
// 재생 시간 계산
public int calMin(String startTime, String endTime){
String[] t1Info = startTime.split(":");
String[] t2Info = endTime.split(":");
return (Integer.parseInt(t2Info[0]) - Integer.parseInt(t1Info[0])) * 60 + Integer.parseInt(t2Info[1]) - Integer.parseInt(t1Info[1]);
}
// #변환
public String makeMusic(String music){
StringBuilder sb = new StringBuilder();
int musicLength = music.length();
char[] musicArr = music.toCharArray();
for(int i = 0; i<musicLength; i++){
if(i < musicLength-1 && musicArr[i+1] == '#'){
sb.append(Character.toString(musicArr[i]).toLowerCase());
i++;
}else{
sb.append(musicArr[i]);
}
}
return sb.toString();
}
// 일치 여부 판단
public boolean isContain(String m, String music){
int mLength = m.length();
int musicLength = music.length();
boolean res = false;
for(int i = 0; i< musicLength; i++){
if(m.charAt(0) == music.charAt(i)){
for(int j = 0; j < mLength; j++){
if(m.charAt(j) == music.charAt((i+j)%musicLength)){
res = true;
}else{
res = false;
break;
}
}
}
if(res){
return res;
}
}
return res;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
programmers_[카카오 인턴] 수식 최대화_java (0) | 2023.05.02 |
---|---|
programmers_연속된 부분 수열의 합_java (0) | 2023.04.28 |
programmers_행렬 테두리 회전하기_java (0) | 2023.04.22 |
programmers_괄호 변환_java (0) | 2023.04.22 |
programmers_택배상자_java (0) | 2023.04.17 |