[Programmers] 예상 대진표 - 2017 팁스타운

동민·2021년 3월 11일
// 예상 대진표 - 2017 팁스타운
public class Tournament {

	public int solution1(int n, int a, int b) {

		int round = 0;
		while (a != b) {

			a = a / 2 + a % 2;
			b = b / 2 + b % 2;
			round++;

		}
		return round;

	}

	public int solution(int n, int a, int b) {

		int j;
		for (j = 1; j <= Math.sqrt(n); j++) {
			if (n == Math.pow(2, j)) {
				break;
			}
		}

		int i, before = 1, after = n, mid = n / 2;
		for (i = j; i >= 1; i--) {

			if (a <= mid && b <= mid) {
				after = mid;
			} else if (a > mid && b > mid) {
				before = mid + 1;
			} else {
				break;
			}
			mid = (before + after) / 2;
		}
		return i;
	}

	public static void main(String[] args) {

		Tournament s = new Tournament();
		System.out.println(s.solution(8, 4, 7)); // 3
		System.out.println(s.solution(16, 9, 16)); // 3
		System.out.println(s.solution(16, 11, 12)); // 1

	}

}
profile
BE Developer

0개의 댓글