프로그래머스 2018 KAKAO BLIND 방금그곡 ( 문자열 ) JAVA
풀이
구현 문제이다.
핵심은 C#,F#과 같은 부분인데 이 부분은 예외처리를 쉽게 하기 위해
replaceAll을 이용하여 다른 값으로 바꿔줘서 해결했다.
programmers.co.kr/learn/courses/30/lessons/17683
소스 코드
import java.util.*;
class Solution {
public String solution(String m, String[] musicinfos) {
String answer = "";
int timeMax=0;
for(int i=0;i<musicinfos.length;i++){
String[] musicInfo = musicinfos[i].split(",");
int playTime=getPlayTime(musicInfo[0],musicInfo[1]);
StringBuilder sb = new StringBuilder();
int idx=0;
String ly = musicInfo[3];
for(int j=0;j<playTime;j++){
sb.append(ly.charAt(idx));
idx++;
if(idx<ly.length()){
if(ly.charAt(idx)=='#'){
sb.append(ly.charAt(idx));
idx++;
}
}
if(idx>=ly.length()){
idx=0;
}
}
String music = sb.toString();
m = m.replaceAll("C#","Q").replaceAll("D#","W").replaceAll("F#","R").replaceAll("G#","T").replaceAll("A#","U");
music = music.replaceAll("C#","Q").replaceAll("D#","W").replaceAll("F#","R").replaceAll("G#","T").replaceAll("A#","U");
if(music.contains(m)&&timeMax<playTime){
answer=musicInfo[2];
timeMax=playTime;
}
}
if(answer.equals("")){
answer = "(None)";
}
return answer;
}
public int getPlayTime(String s1,String s2){
String[] t1 = s1.split(":");
String[] t2 = s2.split(":");
int time1 = Integer.parseInt(t1[0])*60 + Integer.parseInt(t1[1]);
int time2 = Integer.parseInt(t2[0])*60 + Integer.parseInt(t2[1]);
return time2-time1;
}
}
'Algorithm' 카테고리의 다른 글
프로그래머스 오픈채팅방 JAVA (0) | 2022.03.11 |
---|---|
프로그래머스 표편집 JAVA (0) | 2022.03.10 |
알고리즘 문제 풀 때 자주하는 for문에서의 실수😅 ( JAVA ) (0) | 2021.04.27 |
플로이드 와샬 알고리즘 (0) | 2021.04.22 |
BOJ 14503번 로봇청소기 ( 구현 , DFS ) JAVA (0) | 2021.04.19 |