[programmers] 프로그래머스 Level1 하샤드 수
(파이썬 Python)
* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제
* 소스 코드 및 정리한 내용의 저작권은 글쓴이에게 있습니다.
프로그래머스 Level1 하샤드 수
1) 문제
2) 풀이 과정
1. 입력된 x의 자릿수의 합을 우선 더해야 한다.
2. 추 후 자릿수의 합 % x의 값이 0이면(나누어 떨어지면) 하샤드 수 이므로 True 값 반환
3. 그 외는 False값 반환
3) 코드
Solution 1)
1
2
3
4
5
6
7
8
9
10
|
def solution(x):
sum = 0
for i in range(len(str(x))):
sum += int(str(x)[i])
if(x % sum == 0):
return True
else:
return False
|
cs |
Solution 2)
1
2
3
4
5
6
7
8
9
10
|
def solution(x):
sum = 0
for i in str(x):
sum += int(i)
if(x%sum == 0):
return True
else:
return False
|
cs |
4) 정리 노트
(1) for i in range():를 고수하다보니, for i in:을 생각 못하는 것 같다. 일단 풀 때는 for i in range():로 풀었지만, 다 풀고 나서 for i in:로 접근을 해봤다.
(2) 숫자 18과 문자 18은 다르다 컴퓨터는 그걸 모르지? 그러니 int()인지 str()인지를 사용해줘서 구분
일단 내 머릿속 기준이 반복문 for에 대한 접근이 for i in range()로 되어있던 것을
for i in [문자열, 리스트, 튜플]로 추가를 해놔야겠다.
하나의 방법보다 여러 방법을 AB테스트하여 조금 더 괜찮은 게 있다면 습득하자.
* for i in range() # 범위이니까 당연히 매개변수 값을 정수로 받아야겠지?
* len() # 길이잖아? 정수로 하면 오류 나오겠지? 문자열의 길이겠지?
ㄴ1) 숫자 x vs 문자 x의 출력 결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
x = 18
for i in range(x):
print(i)
# < 출 력 >
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10
# 11
# 12
# 13
# 14
# 15
# 16
# 17
|
cs |
1
2
3
4
5
6
7
8
|
x = 18
for i in str(x):
print(i)
# < 출 력 >
# 1
# 8
|
cs |
ㄴ2)
1
2
3
4
5
|
x = 18
print(len(str(x)))
# < 출 력 >
# 2
|
cs |
ㄴ3)
1
2
3
4
5
6
7
8
9
10
|
x = 18
for i in range(len(str(x))):
sum = int(str(x)[i])
print(sum)
# < 출 력 >
# 1
# 8
|
cs |
'*Algorithm > Programmers_Level1' 카테고리의 다른 글
[programmers] 프로그래머스 Level1 약수의 합(파이썬 Python) (0) | 2020.09.03 |
---|---|
[programmers] 프로그래머스 Level1 정수 제곱근 판별(파이썬 Python) (0) | 2020.09.03 |
[programmers] 프로그래머스 Level1 제일 작은 수 제거하기(파이썬 Python) (0) | 2020.09.02 |
[programmers] 프로그래머스 Level1 직사각형 별찍기(파이썬 Python 자바 Java) (0) | 2020.09.02 |
[programmers] 프로그래머스 Level1 행렬의 덧셈(파이썬 Python) (0) | 2020.09.01 |
댓글