코딩테스트/Python
[Programmers] Level 2. 유사 칸토어 비트열
swwho
2025. 2. 14. 16:34
728x90
반응형
🔗 Problem Link
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
❔Thinking
- n-1번째의 1은 11011로, 0은 00000으로 치환한다. (0번째는 1)
- 1 <= n <= 20, 1<= l, r <= 5^n
- l과 r 구간이 주어질 때, 해당 구간의 1의 개수를 반환한다. (l과 r은 폐구간)
💻Solution
def solution(n, l, r):
answer = 0
for i in range(l-1, r):
while True:
if i % 5 == 2:
break
elif i < 5:
answer += 1
break
i //= 5
return answer
🗝️keypoint
- n이 20까지이기 때문에, 5^20은 시간 내에 반복문으로 확인할 수 없다.
- 1과 0의 위치는 일정한 규칙을 가진다. (모든 치환은 11011, 00000 이므로 5개)
- 인덱스가 5 이하라면, 나머지가 2인 인덱스에는 0이 위치한다.
- 인덱스가 5 이상이라면, 5로 나눈 몫을 생각한다.