알고리즘 공부/프로그래머스
(Java)프로그래머스 코딩테스트 연습 - 2017팁스타운 - 예상 대진표
HRuler
2020. 11. 29. 18:21
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/12985?language=java
코딩테스트 연습 - 예상 대진표
△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N
programmers.co.kr
2. 나의 풀이
class Solution
{
public int solution(int n, int a, int b)
{
int answer = 1;
int big = b;
int small = a;
if(a > b) {
big = a;
small = b;
}
while(true) {
if(big - small == 1 && small % 2 == 1) {
break;
}
if(small % 2 == 1) {
small = (small + 1) / 2;
}else {
small = small / 2;
}
if(big % 2 == 1) {
big = (big + 1) / 2;
}else {
big = big / 2;
}
//System.out.println("a : " + a + ", b : " + b);
answer += 1;
}
return answer;
}
}
3. 다른 사람 풀이
class Solution
{
public int solution(int n, int a, int b)
{
return Integer.toBinaryString((a-1)^(b-1)).length();
}
}