1. 문제
programmers.co.kr/learn/courses/30/lessons/12947
2. 내가 생각했던 풀이과정
처음에 입출력 예시만 보고 리스트로 입력받아야한다고 생각하여 리스트 기준으로 코드를 짰는데, 계속 오답처리를 하여 자세히 보니 입출력이 배열이 아닌 정수를 받아야하는 것이었다,, 일단 내가 리스트 기준으로 생각한 풀이는 아래와 같다.
1) input을 받는다
2) input 길이를 재서 input이 리스트이니 리스트 길이만큼 slice를 이용하여 자른다
3) 자른 것을 int로 변환하여 temp에 넣어준다
4) 마찬가지로 input을 리스트로 받았으니, 형변환을 해준다음에 형변환 해준 number를 temp로 나눈 나머지가 0일 경우 True를 리턴해주고 아닐경우 False 를 리턴하게 해주었다.
계속, 오류가 나서 잘 살펴보았는데, 정수 기준으로 짜야되서 코드를 변경해주었다
1) 먼저 입력받은 x를 리스트로 형변환을 해준다
2) 2번 과정은 위에 과정과 같다.
3. 나의 풀이
첫번째 풀이
x = input()
def solution(x):
temp = 0
number = int(x)
for i in range(len(x)):
temp += int(x[i])
if number % temp == 0:
return True
else:
return False
두번째 풀이
def solution(x):
temp = 0
number = list(str(x))
for i in range(len(number)):
temp += int(number[i])
if x % temp == 0:
answer = True
else:
answer = False
return answer
4. 다른 사람의 풀이
def solution(x):
return x % sum([int(c) for c in str(x)]) == 0
5. 새로 알게된 점
str(x)의 인덱스 값을 sum() 을 통해 다 더해주고, 나눴을 때 나머지 값이 0인지를 판단하였다
sum 함수() 정의
첫번째 인자 : iterable하고 숫자데이터가 들어간 객체, 변수
iterable한 자료형을 받으며 numeric 해야합니다. 즉, 리스트나 튜플 처럼 인덱스 순환 접근이 가능한 자료형이고 내부에 숫자로만 이루어져 있어야합니다. 여기서 숫자는 정수, 실수 둘다 가능 합니다.
두번째 인자 : 처음으로 또 더해줄 숫자
return : iterable의 합 + start 값
정리하자면 인자로 들어온 iterable 내부 모든 요소의 합을 구하게 됩니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2016년 (0) | 2021.01.12 |
---|---|
[프로그래머스] 같은 숫자는 싫어 - 파이썬 (0) | 2020.12.31 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 - 파이썬 (0) | 2020.12.27 |
[프로그래머스] 콜라츠 추측 (0) | 2020.12.27 |
[프로그래머스] 제일 작은 수 제거하기 (0) | 2020.12.25 |
댓글