정구리의 우주정복

4839. [파이썬 S/W 문제해결 기본] 2일차 - 이진탐색 본문

ALGORITHM/SOLVE

4839. [파이썬 S/W 문제해결 기본] 2일차 - 이진탐색

Jungry_ 2020. 5. 12. 20:12
반응형

#파이썬

##질문 댓글

 

이진탐색을 할때마다 +1 씩 해줘서 풀었다

testCase = int(input())

for i in range(testCase):
    num = [int(x) for x in input().split(' ')]
    count = []
    for j in range(2):
        l = 1
        r = num[0]
        time = 0
        page = num[j+1]
        while l<=r:
            middle = (l+r)//2
            if page == middle:
                break
            elif page < middle:
                r = middle
                time += 1
            elif page > middle:
                l = middle
                time += 1
        count.append(time)

    if count[0] < count[1]:
        print('#'+str(i+1)+' A')
    elif count[0] == count[1]:
        print('#'+str(i+1)+' 0')
    else:
        print('#'+str(i+1)+' B')

 

----------------의문--------------

testCase = int(input())

def binarySearch(page,pageNum,count):
    l = 0
    r = page 
    while l<= r :
        middle = (l+r)//2
        if pageNum == middle:
            return count
        elif pageNum < middle:
            r = middle 
            count +=1
        elif pageNum > middle: 
            l = middle 
            count +=1
for i in range(testCase):
    num = [int(x) for x in input().split(' ')] #0:page 1: A num 2: B num
    countA =0
    countB =0
    countA = binarySearch(num[0],num[1],countA)
    countB = binarySearch(num[0],num[2],countB)
    if countA < countB:
        print('#'+str(i+1)+' A')
    elif countA == countB :
        print('#'+str(i+1)+' 0')
    elif countA > countB:
        print('#'+str(i+1)+' B')

처음에 만든 소스인데 테스트 케아스 10개중 9개만 통과하고 마지막 하나를 통과하지 못해서 틀린 소스다 !

어디가 틀렸을까 .. 400을 넣었을때 틀렸나 했는데 위에 소스도 400넣으면 동작을 안하는건 마찬가지라 어디가 틀린지 모르겠다 

반응형
Comments