258. CountDiv

아현·2021년 8월 14일
0

Algorithm

목록 보기
270/400



1. JavaScript


정해


function solution(A, B, K) {
    let cnt = parseInt(B / K) - parseInt(A / K);
    if(A % K === 0) cnt += 1;
    return cnt;
}
  • 어떤 구간을 K마다 자르면 완전한 subarray에는 반드시 1개의 K의 배수가 존재한다는 특성을 이용한다.

    • 즉 주어진 구간의 길이를 K로 나눠서 마지막에 남는 나머지가 있다면 그 나머지 안에 K의 배수가 있는지만 검사해서 리턴하면 되는 방식이다.

브루트 포스 (50%)



// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');

function solution(A, B, K) {
    // write your code in JavaScript (Node.js 8.9.4)

    let count = 0
    for (i = A; i <= B; i++ ){
        if(i%K == 0){
            count++;
        }
    }

    return count
}



2. Python



# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A, B, K):
    # write your code in Python 3.6
    len_AB = B + 1 - A

    if len_AB < K:
        for n in range(A, B + 1):
            if n % K == 0:
                return 1

    div, mod = divmod(len_AB, K)
    # last chunk
    for n in range(A + div * K, B + 1):
        if n % K == 0:
            return div + 1
    return div
    
    
  • 우선은 A와 B 사이에 K의 배수가 하나도 없을 경우가 있기 때문에 B + 1 - AK보다 작은 경우 따로 계산

  • 그 다음은 B와 A사이의 거리를 K로 나누어서 나머지가 있는 경우 나머지에서 K의 배수를 찾아주고 아니면 그냥 몫을 리턴한다.

profile
For the sake of someone who studies computer science

0개의 댓글

관련 채용 정보