728x90
문제
Given an array of 4 digits, return the largest 24 hour time that can be made.
The smallest 24 hour time is 00:00, and the largest is 23:59. Starting from 00:00, a time is larger if more time has elapsed since midnight.
Return the answer as a string of length 5. If no valid time can be made, return an empty string.
Example 1:
Input: [1,2,3,4]
Output: "23:41"
Example 2:
Input: [5,5,5,5]
Output: ""
Note:
- A.length == 4
- 0 <= A[i] <= 9
내 풀이
class Solution {
var answer = ""
func largestTimeFromDigits(_ A: [Int]) -> String {
if !A.contains(0) && !A.contains(1) && !A.contains(2) {
return ""
}
//HH : MM
//00 ~ 24
//00 ~ 59
let arr: [Int] = A.sorted().reversed()
let n = A.count
let r = n
let output : [Int] = Array(repeating:0 , count: r)
let visited : [Bool] = Array(repeating: false, count: n)
permutation(arr,output,visited,0,n,r)
return answer
}
func permutation(_ arr : [Int],
_ output : [Int],
_ visited : [Bool],
_ depth : Int,
_ n : Int,
_ r : Int){
var arr = arr
var output = output
var visited = visited
if depth == r {
// stack.append(output)
if output[0] == 2 && output[1] < 4 && output[2] <= 5{
print(output)
answer = "\(output[0])\(output[1]):\(output[2])\(output[3])"
}
if output[0] < 2 && output[2] <= 5 {
print(output)
answer = "\(output[0])\(output[1]):\(output[2])\(output[3])"
}
return
}
if answer == "" {
for i in 0..<n {
if visited[i] != true {
visited[i] = true
output[depth] = arr[i]
permutation(arr,output,visited,depth + 1,n,r)
output[depth] = 0
visited[i] = false
}
}
}
}
}
- 0,1,2 가 없으면 맞는 조건이 없다. return ""
- 일단 배열을 내림차순으로 정렬했다.
- 그리고 배열 4개를 순서가 있게 뽑아 모든 경우의 수를 확인했다.
- 그 중 조건이 맞는 첫번째 값을 정답으로 하였다. (내림차순 정렬했기 때문에)
- 조건은 이러하다.
- 2번째 자리 (HH:MM) 는 항상 6보다 작아야 한다.
- 0번째 자리 (HH:MM)가 2이면 1번째 자리 (HH:MM) 는 항상 4보다 작아야 한다.
728x90
'Algorithm > LeetCode' 카테고리의 다른 글
LeetCode - Swap Nodes in Pairs (0) | 2020.09.03 |
---|---|
LeetCode - Reverse String (0) | 2020.09.03 |
LeetCode - Running Sum of 1d Array (0) | 2020.08.30 |
LeetCode - Detect Capital (0) | 2020.08.07 |
💯 Daily LeetCode Challenge Day_20 - Remove Linked List Elements (2) | 2020.07.29 |
댓글