인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

1. 자리수의 합

while 반복문 질문

작성

·

147

2

<script>
function solution(arr) {
let answer;
let max = Number.MIN_SAFE_INTEGER

for (let x of arr) {
let tmp = x;
let sum = 0;
while (tmp) {
sum += tmp % 10;
tmp = Math.floor(tmp / 10);
}
if (max < sum) {
max = sum;
answer = x;
} else if (max === sum) {
if (answer < x) answer = x;
}
}

return answer;
}

let arr = [128, 460, 603, 40, 521, 137, 123];
console.log(solution(arr));

while (tmp) {
sum += tmp % 10;
tmp = Math.floor(tmp / 10);
}

왜 위의 while 반복문은 무한루프에 빠지지 않는건가요? 

아래와 같이 중간에 if break를 넣을 필요 없이 왜 코드가 잘 구현되는지 알고 싶습니다.

while (tmp) {
sum += tmp % 10;
tmp = Math.floor(tmp / 10);
if (tmp === 0) break;
}

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

tmp라는 어떤 자연수를 계속 10으로 나눈 몫으로 바꾸다 보면 결국에는 tmp가 0이 됩니다.

while 조건문에서 0은 거짓입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기