Write a function:
function solution(A, B, K);
that, given three integers A, B and K, returns the number of integers within the range [A..B] that are divisible by K, i.e.:
{ i : A ≤ i ≤ B, i mod K = 0 }
For example, for A = 6, B = 11 and K = 2, your function should return 3, because there are three numbers divisible by 2 within the range [6..11], namely 6, 8 and 10.
Write an efficient algorithm for the following assumptions:
- A and B are integers within the range [0..2,000,000,000];
- K is an integer within the range [1..2,000,000,000];
- A ≤ B.
문제 풀이
세 개의 정수 A, B, K가 주어지면 [A..B] 범위 내에서 K로 나눌 수 있는 정수의 수를 return 하라는 문제.
첫번째 시도 : 0%
function solution(A, B, K) {
let result = 0;
for(let i = A; i <= B; i++) {
if( i % K === 0 ) result++;
}
return result;
}
5번정도 시도 후: 100%
function solution(A, B, K) {
let result = parseInt(B/K) - parseInt(A/K);
if(A % K === 0) result += 1;
return result
}
처음의 시도의 for문으로 무식한 방법을 사용이 좋지는 않다....
왜 나는 parseInt(B / K) - parseInt(A / K) 를 생각을 못했을까?????
math.floor로 먼저 적용을 하다가 남의 코드를 보고 parseInt를 보게 되었고
math.floor !== parseInt 에 대해서 체크 하게 되었다.
조건을 잘 생각해야된다.
쉽지 않다....
'IT > Algorithm' 카테고리의 다른 글
코딜리티(Codility) Lesson5 GenomicRangeQuery 문제풀기 (0) | 2021.06.02 |
---|---|
코딜리티(Codility) Lesson4 PermCheck 문제풀기 (0) | 2021.05.12 |
코딜리티(Codility) Lesson4 MaxCounters (0) | 2021.03.24 |
코딜리티(Codility) Lesson3 TapeEquilibrium 문제풀기 (0) | 2021.03.04 |
코딜리티(Codility) Lesson3 PermMissingElem 문제풀기 (0) | 2021.03.02 |