상세 컨텐츠

본문 제목

예상 대진표(2레벨)

코딩테스트

by dofury 2023. 1. 20. 20:27

본문

728x90

import kotlin.math.*

class Solution {
    fun solution(n: Int, a: Int, b: Int): Int {
        var answer = 0
 
        
        var aIndex = a
        var bIndex = b
            
        var count = 0
        while(bIndex != aIndex)
        {
            if(aIndex != 1) aIndex = (aIndex+1)/2
            if(bIndex != 1) bIndex = (bIndex+1)/2
            count++
        }

        answer = count
        return answer
    }
}

그렇게 어려운 문제는 아니였는데 n이 없이도 풀수있는데 매개변수로 주고 중간 중간 실수 한게 합해져서

n을 써서 풀려고 하다가 시간을 조금 먹었다.

 

해설

a,b 는 대진표상 서로 옆에 있어야 만날 것이다.
이 가 되게 하기위해 a와 b을 2로 계속 나누면 언젠가는 a,b는 서로소가 되게 된다.
이 횟수가 answs의 값이다.
이 때 a와 b는 작은 수가 홀수, 큰수가 짝은 수가 되야 하기 때문에
+1 을하고 2로 나눠서 소수점을 버리는 식으로 하면 a,b 가 같을 때가 위 조건이 되면서 서로소가 된다.

 

728x90

'코딩테스트' 카테고리의 다른 글

H-Index(2레벨)  (0) 2023.01.21
멀리뛰기(2레벨)  (0) 2023.01.21
N개의 최소공배수(2레벨)  (0) 2023.01.15
카펫(2레벨)  (0) 2023.01.15
피보나치 수(2레벨)  (0) 2023.01.15

관련글 더보기

댓글 영역