Neoself의 기술 블로그

알고리즘 지식 정리(10월 25일)[백준 클래스 2] 본문

개발지식 정리/알고리즘

알고리즘 지식 정리(10월 25일)[백준 클래스 2]

Neoself 2024. 10. 25. 10:18

 

 

요세푸스 문제

import Foundation
let input = readLine()!.components(separatedBy:" ")
var arr = Array(1...Int(input[0])!)
var id = 0
var ans:[String] = []
while !arr.isEmpty {
    let targetId = (id+Int(input[1])!-1)%arr.count // K번째 사람 숫자
    ans.append(String(arr[targetId])) // 숫자 배열에 더하기
    arr.remove(at:targetId) // 해당 숫자 배열에서 제거
    id=targetId
}
print("<\(ans.joined(separator:", "))>")

 


 

직각삼각형

import Foundation

while true {
    let arr = readLine()!.components(separatedBy:" ").map{Int($0)!}.sorted()
    if arr.filter{ $0==0 }.count == 3 { break } // arr가 모두 000일경우 break
    if arr[0]*arr[0]+arr[1]*arr[1] == arr[2]*arr[2] {
        print("right")
    } else {
        print("wrong")
    }
}

 

웰컴키트

import Foundation

let tot=Int(readLine()!)!
let sizeCnt = readLine()!.components(separatedBy:" ").map{Int($0)!}
let setNum = readLine()!.components(separatedBy:" ").map{Int($0)!}
var shirtCnt = 0
for i in 0..<sizeCnt.count {
    if 0<sizeCnt[i] && sizeCnt[i]<=setNum[0] {
        shirtCnt+=1
    } else {
        shirtCnt+=sizeCnt[i]/setNum[0]
        if sizeCnt[i]%setNum[0] != 0 {shirtCnt+=1}
    }
}
print(String(shirtCnt))
print("\(tot/setNum[1]) \(tot%setNum[1])")