백준

스위프트 백준 11866 요세푸스문제

화찌님 2023. 1. 7. 19:52


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