Do.

BOJ1158 - 요세푸스 문제, Swift 본문

Algorithm

BOJ1158 - 요세푸스 문제, Swift

Hey_Hen 2022. 3. 25. 23:33

https://www.acmicpc.net/problem/1158

 

1158번: 요세푸스 문제

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net

 

수가 작아서, remove(at:)을 써도 되는 문제, 만약 n이 커진다면, 링크드리스트나, 다른 접근 방법 필요

 

func boj1158() {
  let input = readLine()!.split(separator: " ").map{ Int(String($0))! }
  let (n, k) = (input[0], input[1])

  var arr: [Int] = .init(1...n)
  var count = k - 1

  var result = "<"

  while arr.count > 0 {
    count = count >= arr.count ? count % arr.count : count

    result.write("\(arr.remove(at: count)), ")
    count += (k - 1)
  }

  result.removeLast(2)
  result.write(">")
  print(result)
}

boj1158()
Comments