반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "프로그래머스(Lv.2) - 예상 대진표" 문제를 풀었습니다.
Github
문제 링크
풀이
이번 문제는 수학 문제입니다. (아마)
몇 가지 케이스를 확인해보며 알고리즘을 작성할 수 있었습니다.
1. A와 B를 2로 나누고 나머지는 올림한다.
이번 문제의 포인트는 다음 라운드로 갈수록 총 인원이 절반씩 줄어든다는 것입니다.
A, B를 2로 나눴을 때 올림한 몫이 같을 때 만나게 됩니다.
A = 4, B = 7일 때 (4, 7) -> (2, 4) -> (1, 2) -> (1, 1)로 3 라운드에 만나게 됩니다. (화살표 개수가 라운드)
감사합니다!
전체 코드
import Foundation
func solution(_ n:Int, _ a:Int, _ b:Int) -> Int {
var answer = 0
var a = a, b = b
while a != b {
a = Int(ceil(Double(a) / 2.0))
b = Int(ceil(Double(b) / 2.0))
answer += 1
}
return answer
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형