Today 12/28
for _ in 1...Int(readLine()!)! {
let NM = readLine()!.split(separator: " ").map{Int(String($0))!}
var inputArr = Array(repeating:Array(repeating: 1, count: 2), count:NM[0])
var inputNum = readLine()!.split(separator: " ").map{Int(String($0))!}
for (index,input) in inputNum.enumerated() {
inputArr[index][0] = index
inputArr[index][1] = input
}
inputNum.sort(by: >)
var output = 0
while true {
if inputArr[0][1] != inputNum[0] {
inputArr.append(inputArr[0])
inputArr.remove(at: 0)
} else {
output += 1
inputNum.remove(at: 0)
if inputArr[0][0] == NM[1] {
break
}
inputArr.remove(at: 0)
}
}
print(output)
}
처음에는 규칙을 생각해서 풀려다가 그냥 queue를 구현해서 풀었다. 2차원 배열을 이용했고, 튜플을 이용해서도 풀 수 있을 것 같았다.
inputNum 배열을 사용하지 않고,
for i in 1..<arr.count {
if arr[i].1 > arr.first!.1 {
arr.append(arr.removeFirst())
flag = true
break
}
}
이런 식으로 작을 때 계속 빼줘도 된다고 한다.