반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/17683
풀이
func solution(_ m:String, _ musicinfos:[String]) -> String {
func change(_ melody: String) -> String {
var melody = melody
melody = melody.replacingOccurrences(of: "A#", with: "a")
melody = melody.replacingOccurrences(of: "C#", with: "c")
melody = melody.replacingOccurrences(of: "D#", with: "d")
melody = melody.replacingOccurrences(of: "F#", with: "f")
melody = melody.replacingOccurrences(of: "G#", with: "g")
return melody
}
var neo = Array(m)
var answer = "(None)"
var answerTime = 0
for mi in musicinfos {
var musicinfo = mi.components(separatedBy: ",")
var st = musicinfo[0].components(separatedBy: ":")
var et = musicinfo[1].components(separatedBy: ":")
var sh = Int(st[0])!
var sm = Int(st[1])!
var eh = Int(et[0])!
var em = Int(et[1])!
var music = change(musicinfo[3]).map {
String($0)
}
var time = eh*60 + em - sh*60 - sm
var idx = 0
var line = ""
for _ in 0..<time {
line += music[idx]
idx = (idx + 1) % music.count
}
if line.contains(change(m)) && answerTime < time {
answer = musicinfo[2]
answerTime = time
}
}
return answer
}
- change 함수처럼 # 음표를 처리하여 접근할 생각을 못해서 조금 애를 먹은 문제입니다.
- 그렇게 처리하고나면 비교적 단순하게 처리가 가능합니다.
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 표 편집 (프로그래머스 lv3, 스위프트) (0) | 2022.04.29 |
---|---|
[알고리즘 연습] 전력망을 둘로 나누기 (프로그래머스 lv2, 스위프트) (0) | 2022.04.27 |
[알고리즘 연습] 다리를 지나는 트럭 (프로그래머스 lv2, 스위프트) (0) | 2022.03.17 |
[알고리즘 연습] 메뉴 리뉴얼 (프로그래머스 lv2, 스위프트) (0) | 2022.02.24 |
[알고리즘 연습] 양궁대회 (프로그래머스 lv2, 스위프트) (0) | 2022.02.22 |