Archive/Questions
[programmers/Swift] 예상 대진표
Marco
2022. 5. 25. 16:23
728x90
programmers.co.kr - 코딩테스트연습 - Lv.2 - 2017 팁스타운 - 예상 대진표
Constraints :
- N : 21 이상 220 이하인 자연수 (2의 지수 승으로 주어지므로 부전승은 발생하지 않습니다.)
- A, B : N 이하인 자연수 (단, A ≠ B 입니다.)
//
// Created by Yongwoo Marco on 2022/05/25.
// Copyright © 2022 Yongwoo Marco Kim. All rights reserved.
//
func solution(_ n:Int, _ a:Int, _ b:Int) -> Int {
var A = a, B = b, round = 0
while A != B {
A = (A%2 == 1 ? (A+1)/2 : A/2 )
B = (B%2 == 1 ? (B+1)/2 : B/2 )
round += 1
}
return round
}
print(solution(8, 4, 7)) // 3
print(solution(8, 1, 2)) // 1
print(solution(Int( pow(2.0, 19) ), 1, Int( pow(2.0, 19) ))) // 1
How I tried this :
1번 2번 팀이 대결하면 승자는 1번 팀이 된다.
따라서 홀수라면 +1/2, 짝수라면 /2를 하면 다음 위치를 알 수 있다.
결과적으로 두 팀이 대결한다면 승리 후 같은 위치에 가게된다.
A == B 인 경우는 두 팀이 대결했다는 의미가 된다.
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90