1057

qkrrnjswo·2023년 4월 4일
0

백준, 프로그래머스

목록 보기
16/53

1057. 토너먼트

	브루트포스 알고리즘
    1) 나만의 방식
      대전한 사람의 범위를 생각 => 2명, 4명, 8명....
      
      대전횟수 = n, 임의의 값 K (n, K는 자연수)
      김지민(A)과 임한수(B) 중 김지민의 번호가 크다고 할 때,

      김지민의 대전 상대 범위: (K-1)(2^n) < A <= K(2^n)
      
      만났다 = (K-1)(2^n) < B < A <= K(2^n)
      
    2) 다른 사람 방식
      홀수 = 다음사람이랑 경기
      짝수 = 전사람이랑 경기(나머지는 버려짐)
      kim = (kim + 1) / 2;
      im = (im + 1) / 2;
      kim == im (만남)
		int max = Math.max(kim,im);
        int min = Math.min(kim,im);

        if (max%2 != 0)
            max++;

        int count = 0;
        int divide = 2;

        if (max != min) {
            count++;
            while (max-divide >= min) {
                divide *= 2;
                if (max%divide != 0)
                    max = max + divide - max%divide;
                count++;
            }
        }
   
   
   //////////==================다른 사람 풀이
   		int count = 0;
        do{
            count++;
            kim = (kim + 1) / 2;
            im = (im + 1) / 2;
        }while(kim == im)

1059. 좋은 구간

0개의 댓글