일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스택
- 데이터베이스
- kmu
- 국민대학교
- machine learning
- Regression
- gan
- 운영체제
- instaloader
- 머신 러닝
- 재귀
- OS
- GIT
- C++
- Python
- python3
- LSTM
- 프로그래머스
- db
- Heap
- googleapiclient
- Stack
- 정렬
- SQL
- 파이썬
- Seq2Seq
- 회귀
- PANDAS
- programmers
- 국민대
Archives
- Today
- Total
정리 노트
프로그래머스 약수의 개수(Python) 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/77884
오랜만에 레벨 1 문제를 풀어보니 너무 쉬웠다. 루트를 이용해 약수의 개수를 찾는 횟수를 줄였다. 나의 코드는 아래와 같다.
from math import sqrt
def solution(left, right):
answer = 0
for n in range(left, right+1):
counter = 0
for i in range(1, int(sqrt(n)) + 1):
if n % i == 0:
if i**2 == n:
counter = counter * 2 + 1
else:
counter += 2
if counter % 2 == 0:
answer += n
else:
answer -= n
return answer
다른 사람의 풀이
다른 사람의 풀이를 봤는데.... 와... 한 수 배웠다.
제곱수는 약수의 개수가 홀수이고 아닌 수는 짝수라는 것을 찾아내 코드를 더욱 간결하게 만들었다. 그 코드는 아래와 같다.
https://programmers.co.kr/learn/courses/30/lessons/77884/solution_groups?language=python3
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
나의 코드에서 if-else문으로 counter 더하는 방법이 틀린 것을 보고 나도 이걸 눈치챘어야 했는데... 나도 언젠가 이렇게 깔끔하게 문제를 풀 날이 올까?
728x90
'프로그래머스 코딩테스트 연습' 카테고리의 다른 글
프로그래머스 가장 큰 수(Python) (0) | 2022.07.12 |
---|---|
프로그래머스 빛의 경로 사이클(Python) (0) | 2022.07.11 |
프로그래머스 거리두기 확인하기(Python) (0) | 2022.07.03 |
프로그래머스 수식 최대화(Python) (0) | 2022.07.02 |
프로그래머스 크레인 인형 뽑기(Python) (0) | 2022.07.01 |