김찬양의 개발일지
11일차. 기사단원의 무기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/136798
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
풀이과정
먼저 약수의 갯수가 필요하기떄문에 약수를 만드는 함수가 필요하다.
약수를 만드는 방법은 널리 알려져있다. 대표적인 방법이 약수가 대칭적이라는것을 이용해서 1부터 제곱근까지 for를 돌려서 한쪽을 출력하고, 그 수로 나눈 값인 반대쪽을 출력한다. 이렇게만 하면 제곱수는 제곱근이 두번 들어가기때문에 set으로 중복을 제거해준다. 이번엔 약수의 갯수가 필요하기때문에 len을 씌워서 리턴해준다.
자 그러면 이제 문제대로 푸는 일만 남는다.
1부터 number까지 약수 함수값을 구하고 만일 공격력이 limit를 초과하면 power를, 아니면 약수 함숫값을 더하는것으로 총 철의 무게를 파악할 수 있다.
정답
def measureCount(number):
measure = []
for i in range(1,int(number**(1/2))+1):
if number%i == 0:
measure.append(i)
measure.append(number//i)
return len(set(measure))
def solution(number, limit, power):
answer = 0
for i in range(1, number+1):
measure = measureCount(i)
if measure > limit:
answer += power
else:
answer += measure
return answer
가끔드는 생각이지만 math에 약수정돈 잇어도 되지않을까 생각한다 최대공약수와 최소공배수 말고도 있었으면 좋겟다.
'코딩테스트 > Programmers Level 1' 카테고리의 다른 글
13일차. 푸드 파이트 대회 (1) | 2023.12.06 |
---|---|
12일차. 과일 장수 (2) | 2023.12.05 |
10일차. 명예의 전당 (1) (0) | 2023.12.03 |
9일차. 문자열 나누기 (0) | 2023.12.02 |
8일차. 가장 가까운 같은 글자 (1) | 2023.12.01 |