약수의 합

sky·2022년 3월 4일
0

Programmers Lv.1(Python)

목록 보기
8/28
post-thumbnail

📕프로그래머스 코딩테스트 Level 1 (Python3)


문제 설명

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

My Algorithm
  1. k는 1로 초기화한다.
  2. n을 k로 나눴을 때 나머지가 0이 되면 k+1을 해주고 몫을 answer에 저장한다.
  3. 또 나눠지면 k+1을 해주고 위의 2번을 반복해서 answer에 더한다.
  4. 더 이상 나눠지지 않으면 반복문을 종료하고 answer를 반환한다.

시도했던 코딩

def solution(n):
    answer = 0
    for answer in range n:
        if n % answer == 0:
            answer += 1
    return answer

이렇게 했더니 망했다.. 파이썬에서의 for문은 참 어렵다.
C/C++/Java에서의 반복문은 비슷해서 익숙했지만 파이썬에서는 달라서 봐도 모르겠다.
익숙해져야 할 듯.for문 말고도 while문 다 시도해봤지만 오류가 났다.
그래서 다른 풀이를 참고해서 다시 시도했다.

solution

def solution(n):
    answer = 0
    for i in range(1, n+1):
        if n % i == 0:
            answer += i
    return answer

다른 풀이를 보니 내가 썼던 코드와 유사하다. for문의 활용을 잘 하지 못해 오류가 난 것이다.
덕분에 내게 부족한 것이 뭔지, 공부해야 할 게 무엇인지 알게 됐다.


◾ 코드 리뷰

  • for 변수 in 리스트(or 튜플, 문자열)
  • for 변수 in range(정수) : 만약 정수에 10을 집어넣으면 1~9까지의 숫자를 출력한다.
  • for 변수 in range(시작, 끝) : range는 범위이므로 끝의 숫자를 제외한 그 사이의 숫자를 모두 출력한다.

⏱total time

  • 2022-03-04 / 12:00 - 12:40 : 알고리즘 적어가면서 계산했지만 답이 안 나옴.
  • 2022-03-05 / 03:20 - 04:00

❗후기

간단한 문제라도 알고리즘을 직접 적어보고 고민해보는 것이 좋다. 아쉬운 점은 for문에 대해서 조금 더 공부하고 문제를 풀었다면 다른 풀이를 보지 않고도 성공할 수 있지 않았을까!

profile
개발자가 되고 싶은 1人

0개의 댓글