티스토리 뷰
코테이토 4기 알고리즘 스터디
- 9월 4주차 공통 과제 A 하샤드
🎈 문제 및 해석
입력 받은 수가 각 자리 수의 합으로 나누어 떨어진다면 True, 아니라면 False를 반환하는 함수를 만든다.
즉, 이 문제를 풀기 위해서는 각 자리 수의 합을 구하는 것이 중요하다.
✨ 문제 풀이
// JavaScript
function solution(num) {
let tmp = num; let digitSum=0;
while(tmp){
digitSum += tmp%10
tmp = parseInt(tmp/10)
}
return (num%digitSum==0);
}
# python
def solution(num):
tmp = num; digit_sum = 0
while(tmp):
digit_sum += tmp%10
tmp //= 10
return (num%digit_sum==0)
입력받은 수를 tmp에 복사하고, 이 tmp를 통해 각 자리수의 합을 구하기로 했다. 동시에 각 자리 수의 합을 저장할 digit_sum을 선언한다.
그러면 tmp에 %10 (10으로 나눈 나머지) 연산을 통해 가장 마지막 자리에 있는 수를 얻을 수 있고,
얻은 이후에는 10으로 나눈 몫으로 두어 한 자리씩 밀리도록 한다.
>>> tmp = 123 # %10 연산을 통해 마지막 자리수 3을 얻을 수 있다.
>>> tmp //= 10 # 다음 자리수를 얻기 위한 tmp 업데이트
>>> tmp
>>> 12 # %10 연산을 통해 마지막 자리수 2를 얻을 수 있다. (이후 반복)
최종 결과로 나온 각 자리 수의 합이 기존 수에서 나누어 떨어지는 지 확인하기 위해서는 % 연산자를 사용하였으며,
'%연산 값이 0이다' 라는 식에 대한 bool 값을 반환하도록 했다.
🎯 추가
python에는 몫 연산자(//)를 이용하여 몫을 바로 구할 수 있지만, 그 외의 언어에는 이러한 연산자가 없다. JS도 이는 마찬가지기 때문에, 나누는 연산(/) 후 정수화하는 방법을 사용한다. 따라서 JS에서는 나누는 연산(/) 후 parseInt() 메서드를 이용하여 정수화를 시켜주었다.
'Etc > Algorithm & Solving' 카테고리의 다른 글
[JS] 백준 4344 평균은 넘겠지 (0) | 2022.10.03 |
---|---|
[JS] 백준 10818 최대 최소 구하기 (0) | 2022.10.03 |
[Python] 백준 1436 #문자열 포함 여부 확인 (0) | 2022.02.28 |
[Algorithm] 매개변수 탐색 (Parametric Search) (0) | 2022.02.27 |
[Algorithm] 이진 탐색 (Binary Search) (0) | 2022.02.26 |
Comments