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로 나눈 몫을 생각한다.
'코딩테스트 > Python' 카테고리의 다른 글
[Programmers] Level 2. 지게차와 크레인 (0) | 2025.02.17 |
---|---|
[Beakjoon] 1922. 네트워크 연결 (0) | 2025.02.16 |
[Baekjoon] 2294. 동전 2 (0) | 2025.02.13 |
[Programmers] Level 2. 도넛과 막대 그래프 (0) | 2025.02.12 |
[Programmers] Level 2. 숫자 블록 (0) | 2025.02.11 |