

import Foundation
//11866 요세푸스문제
var input = readLine()!.split(separator: " ").map{Int(String($0))!}
var n = input[0]
var gap = input[1]
var arr = Array(repeating: true, count: n)
var outArr = [Int]()
var count = 0
var a = 0
for i in 0..<99999999999{
a = i % n
if arr[a] == true{
count += 1
}
if count == gap{
outArr.append(a+1)
count = 0
arr[a] = false
}
if outArr.count == n{
break
}
}
print("<",terminator: "")
for i in outArr{
print(i, terminator: "")
if i != outArr.last{print(", ", terminator: "")}
}
print(">")
다른분들 코드를 보니 큐와 관련지어서 문제를 풀었다.
사이트 밑에 추천알고리즘을 보면 큐를 사용해라는 말이 나와있어서 그런것 같다.
그리고.. 마지막 출력코드는
print("<" + answer.map({String($0)}).joined(separator: ", ") + ">")
이게 훨씬 낫겠다 문자열은 +로 합칠 수 있다는것, 배열의 출력도 map함수를 통하여 반복문을 굳이 사용하지 않아도 된다는 것을 명심하자
'백준' 카테고리의 다른 글
| 백준 스위프트 2108 통계학 (0) | 2023.01.10 |
|---|---|
| 백준 스위프트 1874 스택수열 (0) | 2023.01.07 |
| 백준 스위프트 2164 카드2 (2) | 2023.01.05 |
| 스위프트 백준11650 좌표정렬하기 (0) | 2022.12.31 |
| 스위프트 백준2231 분해합 (0) | 2022.12.31 |