[Python] 약수의 개수와 덧셈

2024. 8. 30. 09:59·CODEKATA

https://school.programmers.co.kr/learn/courses/30/lessons/77884?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

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


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

입출력 예
left right result
13 17 43
24 27 52

입출력 예 설명

입출력 예 #1

  • 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다.
수 약수 약수의 개수
13 1,13 2
14 1,2,7,14 4
15 1,3,5,15 4
16 1,2,4,8,16 5
17 1,17 2

입출력 예 #2

  • 다음 표는 24부터 27까지의 수들의 약수를 모두 나타낸 것입니다.
수 약수 약수의 개수
24 1,2,3,4,6,8,12,24 8
25 1,5,25 3
26 1,2,13,26 4
27 1,3,9,27 4

<문제 풀이>

def solution(left, right):
    answer = 0
    for i in range(left, right +1):
        if int(i ** 0.5) ** 2 == i:
            answer -= i
        else:
            answer += i
    return answer

 

  1. for 문을 통해 범위를 left부터 right까지의 숫자를 하나씩 확인 --> for i in range(left, right +1):
  2. if문을 통해 i의 제곱근을 구한 후 그 제곱근을 다시 제곱했을때 원래 숫자 i가 나온다고 가정 했을때 i가 나온다면 그 숫자는 제곱수 제곱수가 나온 결과는 약수의 개수가 홀수를 의미하므로 빼기 제곱수가 아니라면 더하기 --> if int(i ** 0.5) ** 2 == i:
    answer -= i
    else:
    answer += i

(다시 제곱을 하는 이유는 정확하게 제곱수인지를 확인하기 위함!)

  1. 결과값 리턴

제곱근을 하는 이유?

약수는 기본적으로 쌍을 이룬다 --> 12의 약수는 (1,12) (2,6) (3,4) 이런 식으로 6개

그러나 제곱이 되는 숫자의 약수의 개수는 홀수가 된다 --> 9의 약수는 1, 3, 9 // 4의 약수는 1, 2, 4 

이 점을 활용하여 풀어야 하는 문제 였다!

 

약수는 알았지만 제곱이 되는 숫자의 약수의 개수가 홀수가 된다는 사실은 인지를 하지 못해서 조금 시간이 걸렸다

파이썬 문제를 풀면서 수학지식도 같이 알아가는 느낌이다 ^^ ....

 

 

'CODEKATA' 카테고리의 다른 글

[Python] 내적  (0) 2024.08.22
[Python] 수박수박수박수박수박수?  (1) 2024.08.21
[Python] 가운데 글자 가져오기  (2) 2024.08.20
[MySQL] 특정기간 동안 대여 가능한 자동차들의 대여비용 구하기  (1) 2024.08.12
[MySQL] 입양 시각 구하기(2)  (3) 2024.08.07
'CODEKATA' 카테고리의 다른 글
  • [Python] 내적
  • [Python] 수박수박수박수박수박수?
  • [Python] 가운데 글자 가져오기
  • [MySQL] 특정기간 동안 대여 가능한 자동차들의 대여비용 구하기
임빵빵
임빵빵
헤맨 만큼 내 땅
임빵빵
mj.space
임빵빵
전체
오늘
어제
  • 분류 전체보기 (156)
    • 아티클스터디 (14)
    • ✨Today I Learned (41)
      • MySQL (11)
      • Python (15)
    • 이번 주 돌아보기 (11)
    • 자격증 (9)
      • ADsP (8)
      • SQLD (1)
    • CODEKATA (44)
    • Project (11)
    • Intern (0)
    • Marketing (26)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

링크

공지사항

인기 글

태그

SQL
CodeKata
전처리
내일배움카드
데이터 전처리
오블완
데이터분석
스파르타 코딩클럽
파이썬
데이터분석가
머신러닝
사전캠프
아티클스터디
회귀분석
태블로
아티클
프로그래머스
programmers
심화프로젝트
코드카타
python
wil
데이터 문해력
스파르타코딩클럽
기초
Eda
ADsP
자격증
pandas
데이터 리터러시

최근 댓글

최근 글

hELLO· Designed By정상우.v4.6.1
임빵빵
[Python] 약수의 개수와 덧셈
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.