반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "백준 BOJ - 2875 대회 or 인턴" 문제를 풀었습니다.
Github
문제 링크
풀이
이번 문제는 그리디 알고리즘을 이용할 수 있는 문제입니다.
수학적으로 풀 수 있는 방법도 있는데 저는 그리디를 연습하기 위해 그리디 알고리즘을 이용해 보았습니다.
남자의 수와 여자의 수 절반을 비교해서 수가 더 많은 곳의 인원 수를 인턴으로 보내면 최적이 됩니다.
이때 남자가 팀 구성에 더 유리하기 때문에 여자를 우선으로 인턴을 보냅니다.
남자가 팀 구성이 유리한 이유는 여자는 홀수가 되어 버리면 1명이 놀게 되기 때문입니다.
전체 코드
//2875 대회 or 인턴
import Foundation
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
var woman = input[0]
var man = input[1]
let intern = input[2]
for _ in 0..<intern {
if woman / 2 >= man {
woman -= 1
} else {
man -= 1
}
}
print("\(min(woman/2, man))")
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형