Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- til
- 프로그래머스
- Value Type Reference Type
- coremotion
- Input Output
- CarouselCollectionview
- firebase
- UserDefaults
- SWIFT
- 강한 참조 순환
- UIKit
- 자료구조
- retain cycle
- 면접을 위한 CS전공 지식 노트
- 롤케이크 자르기
- NavigationSearchBar
- 양궁대회
- Array vs Linked List
- tableview section별 다른 cell적용
- TableView
- @escaping
- 면접을 위한 CS 전공 지식 노트 Tree
- Carousel CollectionView
- CoreData
- wil
- 테이블뷰 나누기
- TableView Section
- Reference Cycle
- ReferceCycle
- class struct
Archives
- Today
- Total
개발하는 동글 :]
[프로그래머스],[[3차]_방금그곡],[Swift] 본문
풀이
1. 재생된 시간만큼 문자열을 만들기 위해 C# 같은 문자를 1로 변환한 후 시간만큼의 길이를 가진 문자열을 만들어 같은 방식으로 변환한 target이 포함되어 있는지 확인
2. 포함되어 있을 때 기존의 resultTime과 현재의 time을 비교하여 더 클 시 result와 resultTime을 변경
코드
func solution(_ m:String, _ musicinfos:[String]) -> String {
var target = m.replacingOccurrences(of: "C#", with: "1").replacingOccurrences(of: "D#", with: "2")
.replacingOccurrences(of: "F#", with: "3").replacingOccurrences(of: "G#", with: "4")
.replacingOccurrences(of: "A#", with: "5")
var result = ""
var resultTime = 0
for i in musicinfos{
var data = i.components(separatedBy:",")
var t1 = data[0].components(separatedBy:":").map{Int($0)!}
var t2 = data[1].components(separatedBy:":").map{Int($0)!}
var time = ((t2[0] * 60) + t2[1]) - ((t1[0] * 60) + t1[1])
var musicName = data[2]
var musicData = data[3].replacingOccurrences(of: "C#", with: "1").replacingOccurrences(of: "D#", with: "2")
.replacingOccurrences(of: "F#", with: "3").replacingOccurrences(of: "G#", with: "4")
.replacingOccurrences(of: "A#", with: "5")
var music = ""
while music.count != time{
for i in musicData{
if music.count < time{
music += String(i)
} else {
break
}
}
}
if music.contains(target){
if resultTime < time{
result = musicName
resultTime = time
}
}
}
return result == "" ? "(None)" : result
}