원본 : https://school.programmers.co.kr/learn/courses/30/lessons/148652
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
class Solution {
public int solution(int n, long l, long r) {
l--;
String str = "1";
double pow = Math.pow(5, n);
while (n-- > 0) {
StringBuilder sb = new StringBuilder();
long start = (long) Math.floor(l / pow);
long end = (long) Math.ceil(r / pow);
long idx = 0;
for (char ch : str.toCharArray()) {
if (idx >= end) {
break;
}
if (start <= idx) {
if (ch == '0') {
sb.append("00000");
} else {
sb.append("11011");
}
} else {
l -= pow;
r -= pow;
}
idx++;
}
pow /= 5;
str = sb.toString();
}
long idx = 0;
int cnt = 0;
for (char ch : str.toCharArray()) {
if (idx >= r) {
break;
}
if (l <= idx) {
if (ch == '1') {
cnt++;
}
}
idx++;
}
return cnt;
}
}
추억 점수 (연습문제) (0) | 2023.04.28 |
---|---|
마법의 엘리베이터 (연습문제) (0) | 2023.01.03 |
테이블 해시 함수 (연습문제) (0) | 2023.01.02 |
크기가 작은 부분 문자열 (연습문제) (0) | 2023.01.02 |
숫자 카드 나누기 (연습문제) (0) | 2022.12.12 |
댓글 영역