프로그래머스 LEVEL 2(유사 칸토어 비트열)
-
사용 언어 : javascript
-
해결 날짜 : 2023-05-22
-
해결 방법 :
- 전체 l부터 r까지의 길이에서 0의 개수를 빼는 방식으로 문제 해결
- 11011 -> 1101111011000001101111011 -> … 에서 5개 단위로 잘랐을 때 2번째 인덱스는 항상 0임을 활용
- l - 1부터 r까지 돌며
- i(temp)가 0 이하가 될 때까지 반복
- i(temp)를 5로 나눈 나머지나 몫이 2인 경우, 0이므로 -1
- 예를 들어 n === 2일 때, 10 ~ 14번째 인덱스는 몫이 2로 비트 값이 0, 중간에 0이 나오는 경우는 나머지가 0으로 비트 값이 0임을 알 수 있음
- i(temp)가 0 이하가 될 때까지 반복
- l - 1부터 r까지 돌며
-
회고 :
- x
-
코드
function solution(n, l, r) { let answer = r - l + 1; for (let i = l - 1; i < r; i++) { let temp = i; while (temp) { const quotient = Math.floor(temp / 5), remainder = temp % 5; if (quotient === 2 || remainder === 2) { answer -= 1; break; } temp = quotient; } } return answer; }
-
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges