728x90
코딩테스트 연습 - 기사단원의 무기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
레벨 1이라기엔 풀어야 할 코드가 꽤나 많아서 시간이 다소 걸렸고,
인자들의 범위가 넓었기 때문에 시간복잡도 역시 신경써야 하는 문제다.
인자가 리스트값이었기 때문에 리스트를 사용해서 접근했다.
제곱근이 겹친 채 list_에 들어가기 때문에 set함수를 통해 중복되는 집합 없애기
limit을 넘을 경우/넘지 않을 경우로 나누어서 for문 설정
def cd(n): # 약수 출력
list_ = []
for i in range(1,int(n**0.5)+1): # 범위 설정(제곱근까지만 구해서 복잡도 감소)
if n%i == 0: # 약수 조건이 될 시
list_.append(n//i)
list_.append(i) # 약수들을 a 리스트에 첨부
return len(set(list_)) # 중복되는 수를 제거한 후 길이 반환
def solution(number, limit, power):
total = 0
for a in range(1, number+1):
if cd(a) <= limit:
total += cd(a)
else:
total += power
return total
'cording test' 카테고리의 다른 글
Lv.1 신규 아이디 추천 (0) | 2023.05.17 |
---|---|
LV.2 영어 끝말잇기 (0) | 2023.05.07 |
LV.0 다음에 올 숫자 (0) | 2023.05.07 |
LV.2 괄호 회전하기 (0) | 2023.05.07 |
LV.1 예산 (0) | 2023.05.07 |