안녕하세요! 어느새 lesson 5까지 넘어왔습니다. 오늘도 처음엔 어렵게 느껴졌으나 해볼만 했던 문제였습니다.
이전 코드 내용이 궁금하시다면 아래 링크로 이동하시면 됩니다!
코딜리티 이전 글 - 2020/08/05 - [데이터 분석/파이썬] - [Codility] 코딜리티 4-4. Permcheck (Python)
1. 문제 설명
- 문제는 A와 B 사이의 값들 중에 K로 나눠서 떨어지는 값들의 갯수를 출력하는 것입니다.
- 예시 A=6, B=11, K=2라면, 6,8,10이 2로 나눠 떨어지기 때문에 return값으로 3을 출력하면 되겠습니다.
2. 1차 풀이
- idea : 심플하게 range(A,B+1, K)를 만들어 나눠떨어지면 count를 증가시켰습니다.
def solution(A, B, K):
div = 1
count = 0
for i in range(A,B+1,div):
if i % K == 0:
count +=1
div = K
return count
3. 1차 결과 (시간복잡도 B-A)
4. 2차 풀이
- idea : A, B를 K로 나눴을 때 몫을 구하고, A의 나머지가 0이면 B의 몫 - A의 몫 + 1, A의 나머지가 0보다 크면 B의 몫 - A의 몫을 출력합니다.
def solution(A, B, K):
QA = A//K
RA = A%K
QB = B//K
count = QB-QA
if RA ==0:
count +=1
return count
5. 2차 결과 (시간복잡도 1)