티스토리 뷰

카테고리 없음

ss

뚜비두빱 2020. 2. 9. 15:00
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
	public static void main(String[] args) {
		String[] word = { "12:00,12:14,HELLO,CDEFGAB", "13:00,13:05,WORLD,ABCDEF" };
		String[] word2 = { "03:00,03:30,FOO,CC#B", "04:00,04:08,BAR,CC#BCC#BCC#B" };
		String[] word3 = { "12:00,12:14,HELLO,C#DEFGAB", "13:00,13:05,WORLD,ABCDEF" };
		String m = "ABCDEFG";
		String m2 = "CC#BCC#BCC#BCC#B";
		String m3 = "ABC";

		System.out.println(solution(m2, word2));
	}

	public static String solution(String m, String[] musicinfos) {
		// m = 기억한 멜로디
		String answer = "(None)";

		int array_len = musicinfos.length; // 전체음악 갯수
		int minute = m.length(); // 음악이 재생된 시간
		int melody_time, lyrics_time;
		int long_Time = 0;
		String[] split_Info;
		String title, lyrics;
		for (int i = 0; i < array_len; i++) {
			
			String lyrics_x2 = "";
			split_Info = musicinfos[i].split(",");
			melody_time = time_diff(split_Info[0], split_Info[1]);
			title = split_Info[2];
			lyrics = split_Info[3];
			lyrics_time = lyrics.length();
			
			// 기억한 멜로디가 짧은경우 >> 가사*2 해서 찾기
			lyrics_x2 = lyrics + lyrics;
			while (lyrics_x2.length() < m.length() * 2) {
				lyrics_x2 += lyrics; // 원래 가사를 추가
			}
			// System.out.println(lyrics_x2);
			// System.out.println(m);

			while (true) {
				// 가사를 포함하고 있으면
				if (lyrics_x2.contains(m)) {
					int x = lyrics_x2.indexOf(m);
					// System.out.println("X= "+x);
					// System.out.println(lyrics_x2);
					// System.out.println((lyrics_x2.substring(x + m.length(),x + m.length() + 1)));
					if (!(lyrics_x2.substring(x + m.length(), x + m.length() + 1)).equals("#")) {
						if (melody_time > long_Time) { // 정답중에 제일 긴 시간이면
							long_Time = melody_time;
							answer = title;		
						}
						break;
					} 
					else { //뒤에가 #일경우 짜르고 한번더 검색
						lyrics_x2 = lyrics_x2.substring(x + 1, lyrics_x2.length());
					}
				} 
				else
					break;
			}

		}
		return answer;
	}

	public static int time_diff(String start_t, String end_t) {

		int diff=0;
		int start_hour, end_hour, start_min, end_min;
		String[] time;
		time = start_t.split(":");
		start_hour = Integer.parseInt(time[0]);
		start_min = Integer.parseInt(time[1]);

		time = end_t.split(":");
		end_hour = Integer.parseInt(time[0]);
		end_min = Integer.parseInt(time[1]);

		diff = (end_hour - start_hour) * 60 + (end_min - start_min);

		return diff;
	}

}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함