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보다는 조건을 설정하는게 낫다
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 파이썬 문제풀이 - 점프와 순간 이동 (0) | 2023.05.10 |
---|---|
[프로그래밍] 파이썬 문제풀이 - 베스트앨범 (0) | 2023.05.09 |
[프로그래머스] 파이선 문제풀이 - 기지국 설치 (0) | 2023.05.08 |
[프로그래머스] 파이썬 문제풀이 - 숫자 게임 (0) | 2023.05.06 |
[프로그래머스] 파이썬 문제풀이 - 다리를 지나는 트럭 (0) | 2023.05.04 |
댓글