문제
https://school.programmers.co.kr/learn/courses/30/lessons/17683
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
++ 34번 테스트케이스만 통과 안되는 경우
B#은 주어지지 않았는데.. 34번 테스트 케이스에는 B#이 주어졌나보다 (이유는 모름)
밑에 추가해주면 통과 될 것임
code = code.replaceAll("B#", "b");

최종 코드
package week18.baek;
import java.util.Arrays;
public class P17683 {
public static String solution(String m, String[] musicinfos) {
String answer = "(None)";
int maxTime = -1;
// 네오가 기억한 멜로디를 치환한다.
m = changeCode(m);
for (String info : musicinfos) {
String[] parts = info.split(",");
String start = parts[0];
String end = parts[1];
String title = parts[2];
String music = changeCode(parts[3]);
// 재생된 시간 계산
int startHour = Integer.parseInt(start.split(":")[0]);
int startMinute = Integer.parseInt(start.split(":")[1]);
int endHour = Integer.parseInt(end.split(":")[0]);
int endMinute = Integer.parseInt(end.split(":")[1]);
int playingTime = (endHour - startHour) * 60 + (endMinute - startMinute);
// 음악 문자열 생성
StringBuilder musicCode = new StringBuilder();
for (int j = 0; j < playingTime; j++) {
musicCode.append(music.charAt(j % music.length()));
}
// 멜로디가 포함된 곡을 찾기
if (musicCode.toString().contains(m)) {
if (playingTime > maxTime) {
maxTime = playingTime;
answer = title;
}
}
}
return answer;
}
// #이 붙은 음을 치환하는 함수
public static String changeCode(String code) {
code = code.replaceAll("C#", "c");
code = code.replaceAll("D#", "d");
code = code.replaceAll("F#", "f");
code = code.replaceAll("G#", "g");
code = code.replaceAll("A#", "a");
code = code.replaceAll("B#", "b");
return code;
}
public static void main(String[] args) {
String[] musicinfos = {"12:00,12:14,HELLO,CDEFGAB", "13:00,13:05,WORLD,ABCDEF"};
System.out.println(solution("ABCDEFG", musicinfos));
}
}
Reference
https://suebin-log.tistory.com/19
Programmers, [3차] 방금그곡 : Java
🔗 문제 링크 [3차] 방금그곡 🔎 문제 풀이 부분 문자열 비교를 묻는 문제이다. 재생 시간이 음악 길이보다 긴 경우는 음악이 끊김 없이 처음부터 반복해서 재생되고, 재생 시간이 음악 길이보
suebin-log.tistory.com
'‡ CODING TEST STUDY ‡ > º 프로그래머스' 카테고리의 다른 글
[프로그래머스 | Java Lv.2] [2021 카카오 채용연계형 인턴십] - 거리두기 확인하기 (0) | 2024.09.24 |
---|---|
[프로그래머스 | Java Lv.2] 무인도 여행 (0) | 2024.09.24 |
[프로그래머스 | Java Lv.2] 연속된 부분 수열의 합 (0) | 2024.09.12 |
[프로그래머스 | Java | 2017 팁스타운] 짝지어 제거하기 (0) | 2024.08.19 |
[프로그래머스 | Java | 2024 KAKAO WINTER INTERNSHIP] 가장 많이 받은 선물 (0) | 2024.06.17 |