하샤드 수
https://school.programmers.co.kr/learn/courses/30/lessons/12947
답:
def solution(x):
numlist = list(map(int, str(x)))
num = sum(numlist)
if x % num == 0:
return True
return False
한줄 코딩 / 리스트 컴프리헨션
def solution(x):
return True if x % sum(list(map(int, str(x)))) == 0 else False
문제 분석 및 해석
x 자리수를 더해서 스스로를 나누었을때 나누어 떨어지는 수 구하기
>> 풀이생각
x자리 수를 list로 뽑아내기 (map()활용)
각 자리수를 더하고 그 수로 x를 나누기
나누어 떨어지는 숫자 배열
https://school.programmers.co.kr/learn/courses/30/lessons/12910
답:
def solution(arr, divisor):
answer = []
for a in arr:
if a % divisor == 0:
answer.append(a)
if answer:
return sorted(answer)
return [-1]
한줄 코딩 / 리스트 컴프리헨션
def solution(arr, divisor):
return sorted(a for a in arr if a % divisor == 0) or [-1]
문제 분석 및 해석
array의 요소를 divisor로 나누어 나머지가 0인 값을 담은 array을 return
아무것도 없을때는 [-1] return
*** sort() vs sorted()
- sort() 와 sorted()sorted()는 정렬된 새로운 리스트를 만들어주며, 바로 사용할 수 있다.
- sort()는 리스트 자체를 변경, 매개변수에 저장하여 불러서 사용해야한다
오류가 있었던 과정
-1을 먼저 걸러내어 효율적으로 만들고자 했는데, 하나라도 있는 식이 아니어서 오류가 났다.
쉬운 문제라고 대충 읽었던 것이 문제를 발생시킨 듯..
for a in arr:
if a % divisor != 0:
#하나라도있는것 아니고 하나도 없는 것이므로 -1을 걸러내는 식이 마지막으로 가야함!
return [-1]
행렬의 덧셈
https://school.programmers.co.kr/learn/courses/30/lessons/12950
답:
def solution(arr1, arr2):
answer = []
"""각 자리수를 찾아서 더해주기"""
for i in range(len(arr1)):
array = []
for a in range(len(arr1[i])):
array.append(arr1[i][a] + arr2[i][a])
answer.append(array)
return answer
문제 분석 및 해석
행렬 arr1, arr2의 행과 열을 각각 더한 행렬을 return
answer = arr1 + arr2
단순히 더할 경우 합쳐진 행렬이 될뿐!
[[1,2],[2,3],[3,4],[5,6]]
>> 각 자리를 불러서 더해주어야한다
과정1.
array를 밖에다 둘 경우 arr1에 포함된 모든 식이 안에 들어간 결과가 출력된다
[[4, 6, 7, 9], [4, 6, 7, 9]]
array = []
for i in range(len(arr1)):
for a in range(len(arr1[i])):
array.append(arr1[i][a] + arr2[i][a])
if len(array) == len(arr1[i]):
answer.append(array)
answer.append(array)
따라서 array = []를 for문 안으로 옮겨 식을 구현하였다
느낀점: 문제를 꼼꼼히 읽는 습관을 들이자
'알고리즘 풀이' 카테고리의 다른 글
[알고리즘] 프로그래머스 | K번째 수, 숫자 문자열과 영단어 (0) | 2023.08.07 |
---|---|
[알고리즘, 정보] int를 각 자리수로 나누어 list 만들기 (2) | 2023.08.05 |
[알고리즘] 프로그래머스 | 문자열 다루기, 없는 숫자 더하기, x만큼 간격이 있는 n개의 숫자 (0) | 2023.08.04 |
[알고리즘] 프로그래머스 | 두 정수 사이의 합, 핸드폰 번호 가리기 (0) | 2023.08.03 |
[알고리즘] 프로그래머스 | 평행 (2) | 2023.08.02 |