[알고리즘/자바] 프로그래머스 방금그곡
12440 단어 알고리즘/프로그래머스알고리즘/프로그래머스
문제링크 : https://programmers.co.kr/learn/courses/30/lessons/17683
체감 난이도 : 中
🤔풀이
메서드 설명
- trim(String m) : m에 대해서 #처리
- findAnswer(String str) : str에 대해 memory가 포함돼있으면 playT 비교하여 answer를 갱신
- str은 해당 노래의 정보
- str에서 재생시간인 playT(calculate 연산), 재생시간동안 들리는 가사인 fullLyric 를 계산
- fullLyric에 memory가 포함돼있고, maxPlayT보다 크면 해당 노래 제목으로 answer 갱신
- 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;
}
}
Author And Source
이 문제에 관하여([알고리즘/자바] 프로그래머스 방금그곡), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@961210eee/알고리즘자바-프로그래머스-방금그곡
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- str은 해당 노래의 정보
- str에서 재생시간인 playT(calculate 연산), 재생시간동안 들리는 가사인 fullLyric 를 계산
- fullLyric에 memory가 포함돼있고, maxPlayT보다 크면 해당 노래 제목으로 answer 갱신
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;
}
}
Author And Source
이 문제에 관하여([알고리즘/자바] 프로그래머스 방금그곡), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@961210eee/알고리즘자바-프로그래머스-방금그곡저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)