Algorithm Problem Solving/Programmers

[프로그래머스] 2017 팁스타운 예상 대진표 with Swift

코코자장자장 2022. 1. 12. 14:43

안녕하세요! 오늘은 프로그래머스의 예상 대진표 문제를 풀어보겠습니다!

 

코딩테스트 연습 - 예상 대진표

△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N

programmers.co.kr

 

이 문제는 tree의 공통 부모 노드를 찾는 문제입니다!

 

대진표가 완전 이진트리여서 동일한 부모노드가 나올때까지 ÷2 로 나누어주시면 됩니다!

 

그러기 위해서는 각각의 Index를 이진트리에 맞춰주어야하는데요.

 

n이 2^x 이기 때문에 n - 1 + a, n - 1 + b로 인덱스를 바꾸어주시면 됩니다!

 

import Foundation

func solution(_ n:Int, _ a:Int, _ b:Int) -> Int
{
    var answer = 0
    
    var a = n - 1 + a
    var b = n - 1 + b
    while a != b {
        answer += 1
        a = a/2
        b = b/2
    }
    return answer
}

 

오늘은 여기까지이며, 궁금한 점이 있으시면 댓글로 남겨주세요!

 

좋은 하루 되세요!