알고리즘

[프로그래머스 Lv2] 예상 대진표 (Python)

lwkejpf 2022. 7. 27. 01:10

 


 

def solution(n, a, b):
    round = 1
    
    while (True) :
        if a % 2 == 1 :
            a += 1
        if b % 2 == 1 :
            b += 1 
        if a == b :
            break
            
        a //= 2
        b //= 2
        round += 1
    return round

 

그냥 노트에 낙서하면서 아무 생각없이 코드 친 건데

얼떨결에 통과돼서 ????/!/?????!!!?? 함

 

일단 A 랑 B 랑 어느 라운드에서 만나는지만 알면 되고,

A, B 이외에는 누가 이기던지 상관없기 때문에

무조건 짝수 번호가 올라온다고 가정하고 풀었다

 

그래서 A 랑 B 도 동일하게 홀수 번호이면 +1 해서 짝수 번호로 만들어줬고,

만약 A, B 둘 중에 누구 하나 +1 했는데 같은 번호가 된다는 건

결국 해당 라운드에서 경기하게 된다는 거니까

그때 While 문에서 탈출하고 round 반환한 게 사실 풀이 끝임 .. 

 

만약 A, B 둘 다 짝수 번호로 만들어줬는데 동일한 번호가 아니라면

어차피 해당 라운드에서는 경기할 일 없기 때문에 

round + 1 하고 다시 while 문 돌 수 있도록 해줬음 진짜 끝 !!!

너무 간단해서 나도 당황해벌임 하하

 

 

 

 

뭔가 레벨 2 인거 알고 풀었으면 문제 보기도 전에 겁 먹었을 것 같아

최대한 난이도 보지 말아야지 .. .