링크 programmers.co.kr/learn/courses/30/lessons/12985#
코딩테스트 연습 - 예상 대진표
△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N
programmers.co.kr
규칙을 찾아보니 대진표의 짝수 숫자 //2 가 다음 대진표에 나가는거라서
a가 홀수일 경우에만 1을 더해주게 했는데, 다시 생각해보니 짝수든 홀수든 상관없이 1을 더하면 다음 대진표 숫자가 된다((1+1)//2=1, (2+1)//2=1 로 서로 같음).
그렇게 코드를 짰으면 더 간결했을 듯
def solution(n,a,b):
answer = 0
while a!=b:
if a%2:
a += 1
if b%2:
b += 1
a, b = a//2, b//2
answer += 1
return answer
고쳐봤는데 답도 잘 나온다
def solution(n,a,b):
answer = 0
while a!=b:
a, b = (a+1)//2, (b+1)//2
answer += 1
return answer
규칙을 제대로 찾은다음에 문제를 푸는게 참 중요한거같다
'Algorithm > Python' 카테고리의 다른 글
[파이썬/프로그래머스]배달/다익스트라/우선순위큐/가지치기!!!!!!!!! (0) | 2021.04.03 |
---|---|
[파이썬/프로그래머스]점프와 순간이동 (0) | 2021.04.03 |
[파이썬/프로그래머스]쿼드압축 후 개수 세기 (0) | 2021.04.02 |
[파이썬/프로그래머스]짝지어 제거하기 스택사용 (0) | 2021.04.01 |
[파이썬/백준 19236]청소년 상어 (0) | 2021.04.01 |