일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- hackerrank
- import re
- join
- Level2
- LeetCode
- Stack
- 파이썬
- 완전탐색
- 코딩테스트
- sql
- Growth hacking
- tableau
- 코테
- lv4
- counter
- itertools
- programmers
- mysql
- time complexity
- Queue
- cte
- coding
- python
- coding test
- 프로그래머스
- AARRR
- 조합
- lambda
- level4
- 코딩
Archives
- Today
- Total
ror_coding
[Programmers] 약수의 개수와 덧셈 - 77884 본문
728x90
약수 출력이 아닌 개수만 세고 음/양 결정만 하면 되는 것이기 때문에 숏코드 뿐만 아니라 시간 복잡도, 메모리를 줄일 수 있는 방법이 있다 !
Question
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
Point
- ( n ** 0.5 ) % 1 로 완전 제곱인지 (약수 홀수) 판별 : Code 1
- int(n**0.5)==(n**0.5) 로 완전 제곱인지 판별 : Code 2
Code 1 : 완전 제곱 판별
( n ** 0.5 ) % 1
def solution(left, right):
return sum(n if (n ** 0.5) % 1 else -n for n in range(left, right + 1))
Code 2 : 완전 제곱 판별
int(n**0.5)==(n**0.5)
def solution(left, right):
return sum(-n if int(n**0.5)==(n**0.5) else n for n in range(left, right + 1))
def solution(left, right):
answer = 0
for i in range(left,right+1):
if int(i**0.5)==i**0.5:
answer -= i
else:
answer += i
return answer

now me
On my github
728x90
'Coding Test > Python' 카테고리의 다른 글
[Programmers] 행렬의 덧셈 - 12950 (0) | 2024.10.03 |
---|---|
[Programmers] 문자열 다루기 기본 - 12918 (1) | 2024.10.03 |
[Programmers] 나누어 떨어지는 숫자 배열 - 12910 (0) | 2024.09.30 |
[Programmers] 하샤드 수 - 12947 (0) | 2024.09.29 |
[Programmers] 정수 내림차순으로 배치하기 - 12933 (0) | 2024.09.29 |