본문 바로가기
Algorithm/프로그래머스

[프로그래머스] 파이썬 문제풀이 - 예상 대진표

by whdgus928 2023. 5. 9.

https://school.programmers.co.kr/learn/courses/30/lessons/12985

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

첫 풀이

1. a와 b가 1차이가 날때까지 2로 나눈다(ex 1,2)

2. 2로 나눌때마다 라운드를 더해준다

import math
def solution(n,a,b):
    answer = 1
   
    while a != b:
        if a%2==1 and a+1==b:
            break
        a=math.ceil(a/2)
        b=math.ceil(b/2)
        answer+=1
    return answer

시간초과가 발생했다.

더 나은 답안

1. 문제를 잘 보면 a와 b중 누가 큰 지 모른다

2. a가 크다면 b와 바꿔준다. 항상 b가 크도록

 

import math
def solution(n,a,b):
    answer = 1
    if a>b:
        a,b=b,a
        
    while a != b:
        if a%2==1 and a+1==b:
            break
        a=math.ceil(a/2)
        b=math.ceil(b/2)
        answer+=1
    return answer

 

배운 점

1. 문제 속에 답이 있다

2. while True보다는 조건을 설정하는게 낫다

반응형

댓글