일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Seq2Seq
- 정렬
- 스택
- googleapiclient
- 머신 러닝
- gan
- db
- C++
- 재귀
- 데이터베이스
- kmu
- SQL
- 파이썬
- OS
- 국민대학교
- 국민대
- Heap
- PANDAS
- LSTM
- Stack
- machine learning
- instaloader
- 프로그래머스
- programmers
- Regression
- 운영체제
- Python
- GIT
- 회귀
- python3
Archives
- Today
- Total
정리 노트
프로그래머스 약수의 개수(Python) 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/77884
코딩테스트 연습 - 약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주
programmers.co.kr
오랜만에 레벨 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
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
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 |