11import java .util .*;
22import java .time .*;
3-
43class Solution {
54 public String solution (String m , String [] musicinfos ) {
6- // #을 치환
5+ // # 처리
76 m = replaceShap (m );
8-
97 int maxTime = 0 ;
108 String answer = "(None)" ;
119
12- for (String musicinfo : musicinfos ){
10+ for (String musicinfo :musicinfos ){
1311 String [] params = musicinfo .split ("," );
12+ LocalTime startTime = LocalTime .parse (params [0 ]);
13+ LocalTime endTime = LocalTime .parse (params [1 ]);
14+ int playTime = (int ) Duration .between (startTime ,endTime ).toMinutes ();
15+
1416 String title = params [2 ];
1517 String info = replaceShap (params [3 ]);
16-
17- LocalTime start = LocalTime .parse (params [0 ]);
18- LocalTime end = LocalTime .parse (params [1 ]);
19- // 시간차
20- int time = (int ) Duration .between (start ,end ).toMinutes ();
21-
22- StringBuilder sb = new StringBuilder ();
23- char [] ch = info .toCharArray ();
18+ StringBuilder fullMelody = new StringBuilder ();
2419 int length = info .length ();
25- for (int i =0 ;i <time ;i ++){
26- sb .append (ch [i %length ]);
20+ // 재생 시간동안 나온 전체 악보
21+ for (int i = 0 ; i < playTime ; i ++){
22+ fullMelody .append (info .charAt (i % length ));
2723 }
24+ System .out .println ("풀멜로디: " + fullMelody );
2825
29- // 유사성 체크
30- if (checkCommon (m ,sb .toString ())){
31-
32- // 새로운게 더 길면 -> 덮어씌움
33- if (time > maxTime ){
34- maxTime = time ;
26+ // 전체 악보에 기억중인 멜로디가 포함되어있다면
27+ if (fullMelody .toString ().contains (m )){
28+ if (playTime > maxTime ){
3529 answer = title ;
30+ maxTime = playTime ;
3631 }
3732 }
3833 }
39-
40- // 제목 반환
4134 return answer ;
4235 }
4336
44- // 유사성 체크
45- boolean checkCommon (String m ,String info ){
46- // 멜로디가 info에 포함되는지
47- if (info .contains (m )) return true ;
48- return false ;
49- }
50-
51- String replaceShap (String info ){
52- return info .replaceAll ("C#" ,"H" )
53- .replaceAll ("D#" ,"I" )
54- .replaceAll ("F#" ,"J" )
55- .replaceAll ("G#" ,"K" )
56- .replaceAll ("A#" ,"L" )
57- .replaceAll ("B#" ,"M" );
37+ String replaceShap (String str ){
38+ return str
39+ .replaceAll ("A#" ,"H" )
40+ .replaceAll ("B#" ,"I" )
41+ .replaceAll ("C#" ,"J" )
42+ .replaceAll ("D#" ,"K" )
43+ .replaceAll ("E#" ,"L" )
44+ .replaceAll ("F#" ,"M" )
45+ .replaceAll ("G#" ,"N" );
5846 }
5947}
0 commit comments