프로그래머스 예상 대진표

강인호·2024년 4월 26일
0

알고리즘 문제풀이

목록 보기
36/39

일단 둘이 만날때까지 경기를 진행시켜야하는데

12번은 다음 1번
34번은 다음 2번
56번은 다음 3번 ...
홀수일때는 n+1 /2번
짝수일때는 n+1번 이 다음번호이다.

그리고 둘이 만나는 경우는 둘의 차가 1이고,
차가 1이여도 23 과 같은 경우는 만나지 않으니
2로 나눠서 버림처리 했을때 앞자리가 같냐 를 기준으로 체크했다.

function solution(n,a,b){
    const nextNumber = (num)=>{
    // 2로 나누어 떨어지면
    if(num%2===0){
        return num/2
    }else{
        return (num+1)/2
    }
}
    let aNum = a
    let bNum = b
    let count = 0

    
    for (let i = 0;i<20;i++){
    aNum = nextNumber(aNum)
    bNum = nextNumber(bNum)
    count +=1
        
    // 1 => 0.5
    // 2 => 1
    // => 내림 처리했을때 같으면 안붙음
    // 두 수의 차가 1 이상이거나, 1인데 2로 나누고 내림처리했을때 앞자리가같으면 참
if(1> Math.abs(aNum-bNum) && Math.floor(aNum/2)===Math.floor(bNum/2) ){
    return count
}
    }
    
}

0개의 댓글