프로그래머스: 방금 그 곡
문제
https://programmers.co.kr/learn/courses/30/lessons/17683
코드
1 | public String solution(String m, String[] musicinfos) { |
흐름
- “#”이 붙은 음계들을 유일한 값으로 치환한다.
- 곡 정보를 담은 musicinfos의 개수만큼 반복한다.
- 돌면서 “,”로 잘라 시작시간, 끝난시간, 곡 이름, 멜로디 순으로 구분하여 String array에 저장한다.
- 시작 시간과 끝난 시간을 LocalTime type으로 만들어서 끝난 시간에서 시작 시간을 빼서 얼마나 오래 방송 됐는지 playTime을 구한다.
- 곡 정보에 있는 멜로디에서도 “#”이 붙은 음계들을 1번에서 한 것과 같은 값으로 치환한다.
- playtime에 따라 멜로디에 음계를 추가하기 위해 멜로디를 char array로 변경한다.
- playtime 만큼 반복하면서 멜로디를 만든다.
- playtime보다 멜로디가 짧은 경우엔 지금 멜로디에 음계를 이어 붙여 playtime 길이 만큼 만든다.
- 멜로디가 더 긴 경우엔 playtime 만큼 자른다.
- 이렇게 구한 멜로디에 기억 중인 멜로디 m이 포함된다면 playtime이 가장 긴지 확인하고 곡 정보를 저장한다.
- 끝.
결과
번호 | 속도 |
---|---|
테스트 1 | 통과 (1.31ms, 54.1MB) |
테스트 2 | 통과 (1.38ms, 52.7MB) |
테스트 3 | 통과 (3.19ms, 52.6MB) |
테스트 4 | 통과 (1.33ms, 51.7MB) |
테스트 5 | 통과 (1.44ms, 52.7MB) |
테스트 6 | 통과 (1.42ms, 52.2MB) |
테스트 7 | 통과 (2.26ms, 52.7MB) |
테스트 8 | 통과 (2.27ms, 53.3MB) |
테스트 9 | 통과 (2.38ms, 52.5MB) |
테스트 10 | 통과 (2.31ms, 52MB) |
테스트 11 | 통과 (2.24ms, 53.4MB) |
테스트 12 | 통과 (2.03ms, 53.2MB) |
테스트 13 | 통과 (2.27ms, 53.2MB) |
테스트 14 | 통과 (2.23ms, 52.2MB) |
테스트 15 | 통과 (2.19ms, 53.2MB) |
테스트 16 | 통과 (2.22ms, 52.1MB) |
테스트 17 | 통과 (1.78ms, 52.4MB) |
테스트 18 | 통과 (2.22ms, 53MB) |
테스트 19 | 통과 (2.66ms, 52.5MB) |
테스트 20 | 통과 (2.42ms, 52.1MB) |
테스트 21 | 통과 (2.41ms, 52.3MB) |
테스트 22 | 통과 (3.55ms, 52.9MB) |
테스트 23 | 통과 (3.94ms, 53.2MB) |
테스트 24 | 통과 (2.15ms, 51.9MB) |
테스트 25 | 통과 (1.24ms, 52.3MB) |
테스트 26 | 통과 (1.30ms, 53.2MB) |
테스트 27 | 통과 (1.41ms, 52.6MB) |
테스트 28 | 통과 (1.12ms, 53.1MB) |
테스트 29 | 통과 (12.67ms, 53.4MB) |
테스트 30 | 통과 (13.24ms, 53.1MB) |
테스트 케이스
1 | assertEquals("HELLO", test.solution("ABCDEFG", new String[] {"12:00,12:14,HELLO,CDEFGAB", "13:00,13:05,WORLD,ABCDEF"})); |