JasonScript

Jason's Research Blog

Development/Algorithm

< 알고리즘 문제 풀이 > 유사 칸토어 비트열

jason.bak 2023. 12. 28. 13:44

문제 링크 > 코딩테스트 연습 - 유사 칸토어 비트열 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

솔루션 >

def solution(n, l, r):
    answer = f(n, r) - f(n, l - 1)
    return answer

def f(n, pos):
    if n == 1:
        return '11011'[:pos].count('1')
    quotient, remainder = divmod(pos, 5 ** (n - 1))
    cnt = 0
    if quotient <= 1:
        cnt = 4 ** (n - 1) * quotient + f(n - 1, remainder)
    elif quotient == 2:
        cnt = 2 * 4 ** (n - 1)
    elif quotient > 2:
        cnt = 4 ** (n - 1) * (quotient - 1) + f(n - 1, remainder)
    
    return cnt