-
문자열?_Programmers_PCCP기출 1번 동영상재생기 [swift]알고리즘/알고리즘 문제풀이 2025. 3. 2. 17:21
https://school.programmers.co.kr/learn/courses/30/lessons/340213
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제접근
- String형식으로 주어지는 시간을 전부 second로 바꾼다
- 반복문을 사용하여 commands를 순회하며 명령을 수행한다.
- 명령 수행 후, 0초보다 작거나, 동영상 길이보다 크다면, 이를 보정한다.
- 그런데, 명령 순회 전, 후 에 오프닝 시간 사이에 들어가는지 체크하여 오프닝 끝 시간으로 이동한다.
정답코드
더보기import Foundation func solution(_ video_len:String, _ pos:String, _ op_start:String, _ op_end:String, _ commands:[String]) -> String { var currentPos = convertStringTimeToSecond(time: pos) let opStartSec = convertStringTimeToSecond(time: op_start) let opEndSec = convertStringTimeToSecond(time: op_end) let videoLengthSec = convertStringTimeToSecond(time: video_len) for command in commands { if isOpeningTime(currentPos, opStartSec, opEndSec) { currentPos = opEndSec} switch command { case "next": currentPos += 10 if currentPos > videoLengthSec { currentPos = videoLengthSec} case "prev": currentPos -= 10 if currentPos < 0 { currentPos = 0 } default: continue } if isOpeningTime(currentPos, opStartSec, opEndSec) { currentPos = opEndSec} } return convertSecondToStringTime(second: currentPos) } func isOpeningTime(_ current: Int, _ start: Int, _ end: Int) -> Bool { if start <= current && current <= end { return true } return false } func convertStringTimeToSecond(time: String) -> Int { let sliced = time.components(separatedBy: ":").map { Int($0)! } return sliced[0] * 60 + sliced[1] } func convertSecondToStringTime(second: Int) -> String { let convertedMin = second/60 let convertedSec = second%60 var outputMin = convertedMin < 10 ? "0\(convertedMin)" : "\(convertedMin)" var outputSec = convertedSec < 10 ? "0\(convertedSec)" : "\(convertedSec)" return outputMin+":"+outputSec }
'알고리즘 > 알고리즘 문제풀이' 카테고리의 다른 글
PrefixSum_Leetcode_560. Subarray Sum Equals K [swift] (0) 2025.03.10 BinaryTree,PrefixSum_Leetcode_437. Path Sum III [swift] (0) 2025.03.10 math_Programmers_N개의 최소공배수 [swift] (0) 2025.02.26 BinaryTree_LeetCode_105. Construct Binary Tree from Preorder and Inorder Traversal [swift] (0) 2025.02.26 Matrix_LeetCode_73. Set Matrix Zeroes [swift] (0) 2025.02.25