-
[프로그래머스] LV1. 기사단원의 무기알고리즘 2023. 3. 11. 15:26728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/136798
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
접근
1. 간단한 약수의 개수 구하는 문제
2. 인줄 알았는데 시간초과 남..
3. n+1 까지가 아니라 int(n**(0.5)) + 1 & 제곱근은 한번만 더해 중복을 피하는 것을 생각하기
풀이
실패 코드
# 약수 개수 구하는 메소드 def counting(n): cnt = 0 for i in range(1,n+1): if n % i == 0: cnt += 1 return cnt def solution(num, limit, power): answer = 0 for n in range(1,num+1): if counting(n) > limit: answer += power else: answer += counting(n) return answer
정답 코드
# 약수 개수 구하는 메소드 def counting(n): cnt = 0 for i in range(1,int(n**(1/2))+1): if n % i == 0: if i == n//i: # 제곱근일 경우 -> 1개만 카운트하기 cnt += 1 else: cnt += 2 return cnt def solution(num, limit, power): answer = 0 for n in range(1,num+1): if counting(n) > limit: answer += power else: answer += counting(n) return answer
참고
분명 맞는데,,,왜 시간초과가 나지?? -> n+1 까지가 아니라 int(n**(0.5)) + 1 & 제곱근은 한번만 더해 중복을 피한다라는 생각을 알려주심
https://chan-lab.tistory.com/35
[프로그래머스] 기사단원의 무기 파이썬 알고리즘 문제풀이 (약수의 개수 구하기)
안녕하세요. 은공지능 공작소의 파이찬입니다. 오늘은 level 1 "기사단원의 무기" 문제 풀어보겠습니다. 효율적으로 약수의 개수를 구하는 방법이 중요한 문제입니다. 해당 문제 바로가기 링크 ↓
chan-lab.tistory.com
'알고리즘' 카테고리의 다른 글
[프로그래머스] LV1. 둘만의 암호 (0) 2023.03.13 [프로그래머스] LV1. 개인정보 수집 유효기간 (0) 2023.03.11 [프로그래머스] LV1 햄버거 만들기 (0) 2023.03.09 [프로그래머스] LV1. 최소직사각형 (0) 2023.03.09 [프로그래머스] LV1. 문자열 나누기 (0) 2023.03.09