새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 국비지원
  • 자기주도학습
  • Selenium 4
  • 프로그래머스
  • 내일배움카드
  • 코딩프로젝트
  • Github
  • 개발일지
  • 코딩
  • portfolio
  • docker
  • AI트랙
  • 내일배움캠프
  • Python
  • 코린이
  • machine learning
  • 스파르타코딩클럽
  • til
  • TodayILearned
  • 내일배움단

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

Algorithm

[프로그래머스] 코딩테스트 연습월간 코드 챌린지 시즌2 약수의 개수와 덧셈

2022. 7. 30. 22:34

문제

문제 설명

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.


제한사항
  • 1 ≤ left ≤ right ≤ 1,000

 

입력 & 출력

입출력 예

leftrightresult

13 17 43
24 27 52

 

풀이 과정

1. 약수를 구할 수 있는 함수를 하나 만들어주도록 한다 def로 정의하며 이것을 만들 때는 제곱근을 이용한 방식으로 하였다.

2. 1번내용을 추가적으로 설명해본다면 약수를 구할 때 for문을 한 바퀴 다 돌게 된다면 어차피 중복되는 내용을 검사하는 방식이 되므로 제시받은 n이라는 수의 제곱근까지의 숫자까지만 for문을 순회하고 이렇게 구해진 약수를 n에서 나눈 숫자도 배열에 저장하면서 약수의 배열을 구하도록 하였다.

3. 약수의 배열을 구한 후 이것의 길이를 이용하여 짝수와 홀수를 구분하고 짝수일경우에는 더하고 홀수 일 때는 빼는 로직을 추가하여 answer를 리턴하여 주면 원하는 값을 얻을 수 있다. 

 

코드

def solution(left, right):
    answer = 0
    for check in range(left, right + 1):
        if len(divisor_check(check)) % 2 ==0 :
            answer += check
        else:
            answer -= check

    return answer


def divisor_check(n):
    divisor_list = []

    for i in range(1, int(n ** (1 / 2) + 1)):
        if (n % i == 0):
            divisor_list.append(i)
            if ((i ** 2) != n):
                divisor_list.append(n // i)
    divisor_list.sort()
    return divisor_list

print(solution(13,17))
저작자표시 비영리 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

[프로그래머스] 코딩테스트 연습2018 KAKAO BLIND RECRUITMENT[1차] 비밀지도  (0) 2022.08.02
[프로그래머스] 코딩테스트 연습정렬 가장 큰 수  (0) 2022.07.31
[프로그래머스] 코딩테스트 연습 - 나머지가 1이 되는 수 찾기  (0) 2022.07.29
[프로그래머스] 코딩테스트 연습 연습문제 문자열 다루기 기본  (0) 2022.07.28
[프로그래머스] 코딩테스트 연습해시 전화번호 목록  (0) 2022.07.27
    'Algorithm' 카테고리의 다른 글
    • [프로그래머스] 코딩테스트 연습2018 KAKAO BLIND RECRUITMENT[1차] 비밀지도
    • [프로그래머스] 코딩테스트 연습정렬 가장 큰 수
    • [프로그래머스] 코딩테스트 연습 - 나머지가 1이 되는 수 찾기
    • [프로그래머스] 코딩테스트 연습 연습문제 문자열 다루기 기본
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바