Skip to content

Commit ebfa0e9

Browse files
committed
[level 2] Title: [3차] 방금그곡, Time: 26.28 ms, Memory: 79.8 MB -BaekjoonHub
1 parent 16a9c1c commit ebfa0e9

File tree

2 files changed

+26
-38
lines changed

2 files changed

+26
-38
lines changed

프로그래머스/2/17683. [3차] 방금그곡/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
### 성능 요약
66

7-
메모리: 94.8 MB, 시간: 21.95 ms
7+
메모리: 79.8 MB, 시간: 26.28 ms
88

99
### 구분
1010

@@ -16,7 +16,7 @@
1616

1717
### 제출 일자
1818

19-
2025년 08월 26일 17:17:06
19+
2025년 08월 26일 17:36:19
2020

2121
### 문제 설명
2222

Lines changed: 24 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,47 @@
11
import java.util.*;
22
import java.time.*;
3-
43
class Solution {
54
public String solution(String m, String[] musicinfos) {
6-
// #을 치환
5+
// # 처리
76
m = replaceShap(m);
8-
97
int maxTime = 0;
108
String answer = "(None)";
119

12-
for(String musicinfo: musicinfos){
10+
for(String musicinfo:musicinfos){
1311
String[] params = musicinfo.split(",");
12+
LocalTime startTime = LocalTime.parse(params[0]);
13+
LocalTime endTime = LocalTime.parse(params[1]);
14+
int playTime = (int) Duration.between(startTime,endTime).toMinutes();
15+
1416
String title = params[2];
1517
String info = replaceShap(params[3]);
16-
17-
LocalTime start = LocalTime.parse(params[0]);
18-
LocalTime end = LocalTime.parse(params[1]);
19-
// 시간차
20-
int time = (int) Duration.between(start,end).toMinutes();
21-
22-
StringBuilder sb = new StringBuilder();
23-
char[] ch = info.toCharArray();
18+
StringBuilder fullMelody = new StringBuilder();
2419
int length = info.length();
25-
for(int i=0;i<time;i++){
26-
sb.append(ch[i%length]);
20+
// 재생 시간동안 나온 전체 악보
21+
for(int i = 0; i < playTime; i++){
22+
fullMelody.append(info.charAt(i % length));
2723
}
24+
System.out.println("풀멜로디: " + fullMelody);
2825

29-
// 유사성 체크
30-
if(checkCommon(m,sb.toString())){
31-
32-
// 새로운게 더 길면 -> 덮어씌움
33-
if(time > maxTime){
34-
maxTime = time;
26+
// 전체 악보에 기억중인 멜로디가 포함되어있다면
27+
if(fullMelody.toString().contains(m)){
28+
if(playTime > maxTime){
3529
answer = title;
30+
maxTime = playTime;
3631
}
3732
}
3833
}
39-
40-
// 제목 반환
4134
return answer;
4235
}
4336

44-
// 유사성 체크
45-
boolean checkCommon(String m,String info){
46-
// 멜로디가 info에 포함되는지
47-
if(info.contains(m)) return true;
48-
return false;
49-
}
50-
51-
String replaceShap(String info){
52-
return info.replaceAll("C#","H")
53-
.replaceAll("D#","I")
54-
.replaceAll("F#","J")
55-
.replaceAll("G#","K")
56-
.replaceAll("A#","L")
57-
.replaceAll("B#","M");
37+
String replaceShap(String str){
38+
return str
39+
.replaceAll("A#","H")
40+
.replaceAll("B#","I")
41+
.replaceAll("C#","J")
42+
.replaceAll("D#","K")
43+
.replaceAll("E#","L")
44+
.replaceAll("F#","M")
45+
.replaceAll("G#","N");
5846
}
5947
}

0 commit comments

Comments
 (0)