프로그래머스 LEVEL 2(유사 칸토어 비트열)

image

  • 사용 언어 : 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임을 알 수 있음
  • 회고 :

    • 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