[アルゴリズム/Java]プログラマーのさっきの歌
12519 ワード
質問リンク:https://programmers.co.kr/learn/courses/30/lessons/17683
体感難易度:中
🤔に答える
トリム(String m):m#処理 findAnswer(String str):strにメモリが含まれている場合、playtを比較して答えをリフレッシュします. strは曲の情報 strで再生時間Playt(計算演算)、再生時間で聞こえる歌詞fulllyric、計算 fullLyricはメモリを含み、maxPlayTより大きい場合は歌名で答え をリフレッシュする.
calculateT(String[] start, String[] end) : 📃合成コード
体感難易度:中
🤔に答える
メソッドの説明
📃合成コード public class PG방금그곡 {
static String memory;
static String answer = "";
static Integer maxPlayT = 0;
public static String solution(String m, String[] musicinfos) {
memory = trim(m); // # 처리된 기억 멜로디
for (String musicinfo : musicinfos) {
findAnswer(musicinfo); // memory가 포함돼있으면 playT 비교한 후 answer 갱신
}
return answer.equals("") ? "(None)" : answer; // answer가 초기값이면 answer가 없으므로 "(None)" 출력
}
private static String trim(String m) {
return m.replaceAll("C#", "3")
.replaceAll("D#", "4")
.replaceAll("F#", "5")
.replaceAll("G#", "6")
.replaceAll("A#", "1");
}
private static void findAnswer(String str) {
String[] split = str.split(",");
Integer playT = calculateT(split[0].split(":"), split[1].split(":"));
String name = split[2];
String[] lyrics = trim(split[3]).split("");
StringBuilder fullLyric = new StringBuilder("");
for (int i = 0; i < playT; i++) {
fullLyric.append(lyrics[i % lyrics.length]);
}
if (fullLyric.toString().contains(memory) && playT > maxPlayT) {
answer = name;
maxPlayT = playT;
}
}
private static Integer calculateT(String[] start, String[] end) {
Integer startT = Integer.parseInt(start[0]) * 60 + Integer.parseInt(start[1]);
Integer endT = Integer.parseInt(end[0]) * 60 + Integer.parseInt(end[1]);
return endT - startT;
}
}
Reference
この問題について([アルゴリズム/Java]プログラマーのさっきの歌), 我々は、より多くの情報をここで見つけました
https://velog.io/@961210eee/알고리즘자바-프로그래머스-방금그곡
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
public class PG방금그곡 {
static String memory;
static String answer = "";
static Integer maxPlayT = 0;
public static String solution(String m, String[] musicinfos) {
memory = trim(m); // # 처리된 기억 멜로디
for (String musicinfo : musicinfos) {
findAnswer(musicinfo); // memory가 포함돼있으면 playT 비교한 후 answer 갱신
}
return answer.equals("") ? "(None)" : answer; // answer가 초기값이면 answer가 없으므로 "(None)" 출력
}
private static String trim(String m) {
return m.replaceAll("C#", "3")
.replaceAll("D#", "4")
.replaceAll("F#", "5")
.replaceAll("G#", "6")
.replaceAll("A#", "1");
}
private static void findAnswer(String str) {
String[] split = str.split(",");
Integer playT = calculateT(split[0].split(":"), split[1].split(":"));
String name = split[2];
String[] lyrics = trim(split[3]).split("");
StringBuilder fullLyric = new StringBuilder("");
for (int i = 0; i < playT; i++) {
fullLyric.append(lyrics[i % lyrics.length]);
}
if (fullLyric.toString().contains(memory) && playT > maxPlayT) {
answer = name;
maxPlayT = playT;
}
}
private static Integer calculateT(String[] start, String[] end) {
Integer startT = Integer.parseInt(start[0]) * 60 + Integer.parseInt(start[1]);
Integer endT = Integer.parseInt(end[0]) * 60 + Integer.parseInt(end[1]);
return endT - startT;
}
}
Reference
この問題について([アルゴリズム/Java]プログラマーのさっきの歌), 我々は、より多くの情報をここで見つけました https://velog.io/@961210eee/알고리즘자바-프로그래머스-방금그곡テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol