🖇️ 문제 링크
📝 문제 분석
시작 시간과 종료 시간을 분으로 바꾸고, 총 플레이 시간이 몇 분인지 구합니다.
플레이 시간에 맞게, 그만큼 연주된 악보를 만들고 네오가 기억한 멜로디를 포함하고 있다면 정답 후보입니다.
조건이 일치하는 음악이 여러 개일 때는 재생된 시간이 가장 긴 음악 제목을 반환하므로, 재생 시간이 더 긴 음악이 나오면 정답을 갱신합니다.
⌨️ 코드
class Solution {
public String solution(String m, String[] musicinfos) {
String answer = "(None)";
int time = 0;
m = change(m);
for (String music : musicinfos) {
String[] info = music.split(",");
int start_minute = (60 * Integer.parseInt(info[0].substring(0, 2)) + Integer.parseInt(info[0].substring(3)));
int end_minute = (60 * Integer.parseInt(info[1].substring(0, 2)) + Integer.parseInt(info[1].substring(3)));
int minute = end_minute - start_minute;
if (minute > time) {
String s = change(info[3]);
StringBuilder sb = new StringBuilder();
int iter = minute / s.length();
int nmg = minute % s.length();
sb.append(s.repeat(iter));
sb.append(s, 0, nmg);
if (sb.toString().contains(m)) {
answer = info[2];
time = minute;
}
}
}
return answer;
}
public String change(String s) {
return s.replace("C#", "1")
.replace("D#", "2")
.replace("F#", "3")
.replace("G#", "4")
.replace("A#", "5");
}
}
Uploaded by Notion2Tistory v1.1.0