[프로그래머스 / Level 1] 약수의 개수와 덧셈 (파이썬)

2022. 4. 8. 23:10·🎲 알고리즘 공부/프로그래머스

📝 문제 요약

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

 

https://programmers.co.kr/learn/courses/30/lessons/77884

 

코딩테스트 연습 - 약수의 개수와 덧셈

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

programmers.co.kr

 

예시처럼 left부터 right 범위 안에 숫자가 여러개 있다. 위 예시에서는 left = 13, right = 17이 입력된 것이다. 약수의 개수에 따라 +, -가 결정이 된다. 만약 약수의 개수가 짝수라면 +, 홀수면 - 해야한다.

🎨 풀이

💡 첫번째 시도 = 성공(은 아니지만 다른 코드가 기억이 안난다 ㅠㅠ)

 

def solution(left, right):
    answer = 0
    count = 1          # 약수 1 때문에 count = 1임. 
    
    for num in range(left, right+1):
        for i in range(2,num+1):
            if num % i == 0:
                count += 1
        if count % 2 == 0:
            answer += num
            count = 1        
        else : 
            answer -= num
            count = 1
    return answer

 

> 

[참고] count = 1인 이유는, 1은 모든 수의 약수가 되기 때문에 미리 포함해둔것이다.

1. for문을 돌면서 먼저 left ~ right +1 사이의 값 중 하나를 선택한다.

2. num % i 를 통해 약수인지 체크한다. 만약 약수가 맞다면 count += 1을 해준다.

3. 약수 체크가 끝난 후에는 count(약수의 개수)에 들어있는 값이 짝수인지 홀수인지 체크를 해주고 answer에서 해당 수를 더하거나 빼준다. (count = 1로 다시 초기화시킨다)

 

 

끝~

 

⭐ 느낀점

 

> 이것도 뭐.. 쉬운 문제였다. 요즘 나는 level 2를 조금 풀어보는 중인데.. 넘 막막하다. 연습문제도 어려워서 큰일이다. 그래도 이런 거라도 알아서 다행이네 싶기도 하고.. 여튼 그렇다. 좀 분발할 필요가 있어보인다. ㅠㅠ 분발!

'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글

[프로그래머스 / Level 1] 예산 (파이썬)  (0) 2022.04.10
[프로그래머스 / Level 1] 3진법 뒤집기 (파이썬)  (0) 2022.04.09
[프로그래머스 / Level 1] 폰켓몬 (파이썬)  (0) 2022.04.07
[프로그래머스 / Level 1] 체육복 (파이썬)  (0) 2022.04.06
[프로그래머스 / Level 1] K번째수 (파이썬)  (0) 2022.04.05
'🎲 알고리즘 공부/프로그래머스' 카테고리의 다른 글
  • [프로그래머스 / Level 1] 예산 (파이썬)
  • [프로그래머스 / Level 1] 3진법 뒤집기 (파이썬)
  • [프로그래머스 / Level 1] 폰켓몬 (파이썬)
  • [프로그래머스 / Level 1] 체육복 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (267)
      • 📑 신입일기 (35)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 📘 독서 (0)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    오버워치
    정처기
    컨텐더스
    카카오
    백준
    일기
    6월 목표
    codeup
    파이썬
    연습문제
    코테
    BOJ
    til
    nodejs
    신입일기
    정보처리기사
    행렬덧셈
    코민이
    폰켓몬
    코드업
    찬양추천
    티스토리챌린지
    오블완
    피보나치수
    50문답
    코린이
    스프링 부트
    스프링부트
    충무로
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[프로그래머스 / Level 1] 약수의 개수와 덧셈 (파이썬)
상단으로

티스토리툴바