1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
import Foundation
func solution(_ m:String, _ musicinfos:[String]) -> String {
// 입력의 샵문자를 일반 캐릭터로 변환
var convertm = m
convertm = convertm.replacingOccurrences(of: "A#", with: "H")
.replacingOccurrences(of: "C#", with: "I")
.replacingOccurrences(of: "D#", with: "J")
.replacingOccurrences(of: "F#", with: "K")
.replacingOccurrences(of: "G#", with: "L")
var matchSong = ""
// 실제 플레이 된 사운드와 타이틀을 매치시킨 사전 준비
var dict = [String : String]()
// dict 작성
for info in musicinfos {
let str = info.components(separatedBy: ",")
var (start, end, title, sound) = (str[0], str[1], str[2], str[3])
// 시간 변환
let (starthh, startmm) = (start.components(separatedBy: ":")[0],
start.components(separatedBy: ":")[1])
let (endhh, endmm) = (end.components(separatedBy: ":")[0],
end.components(separatedBy: ":")[1])
let time = (Int(endhh)! - Int(starthh)!) * 60 + (Int(endmm)! - Int(startmm)!)
// 재생한 사운드 작성
sound = sound.replacingOccurrences(of: "A#", with: "H")
.replacingOccurrences(of: "C#", with: "I")
.replacingOccurrences(of: "D#", with: "J")
.replacingOccurrences(of: "F#", with: "K")
.replacingOccurrences(of: "G#", with: "L")
// 처음부터 끝까지 반복 + 남은거 붙이기
let playedSound = String(repeating: sound, count: time / sound.count)
+ sound[sound.startIndex..<sound.index(sound.startIndex, offsetBy: time%sound.count)]
// dict 작성
dict[playedSound] = title
}
for song in dict.keys {
// 비교하고 싶은 음이 사전에 있으면
if song.contains(convertm) {
// 재생된 시간이 같을 경우 먼저 입력된 음악 제목을 반환
if matchSong == "" {
matchSong = song
} else {
// 조건이 일치하는 음악이 여러 개일 때에는 라디오에서 재생된 시간이 제일 긴 음악 제목을 반환
if matchSong.count < song.count {
matchSong = song
}
}
}
}
if matchSong == "" { return "(None)" }
return dict[matchSong]!
}
|