조건문: helloworld

Yoon Kyung Park·2023년 4월 26일
0

My Item Pool

목록 보기
1/3

Q. 수를 입력받아 3과 5로 각각 나눈 다음 나머지 값에 따라 알맞은 메세지를 리턴해라.

출력 조건)

  • string 타입으로 리턴
  • 3으로 나누어 떨어지는 경우 --> 'Hello' 리턴
  • 5로 나누어 떨어지는 경우 --> 'World' 리턴
  • 3과 5로 모두 나누어 떨어지는 경우 -->'HelloWorld' 리턴
  • 3과 5로 나누어 떨어지지 않는 경우 --> 'Bye' 리턴

A.

function helloworld(num){
	if(num % 3 === 0) {
    	return 'Hello';
    }else if(num % 5 === 0) {
    	return 'World';
    }else if(num & 15 === 0) {
    	return 'Hello World';
    }else{
    	return 'Bye'
    }    
}

는 에러가 났다. 왜일까?
3과 5로 모두 나누어 떨어지는 경우는 15의 배수다.
조건식은 맞게 썼으나 위치가 잘못 되었다.
자바스크립트 엔진은 위에서 아래로 코드를 읽는다.
만약 3과 5의 배수인 15가 매개변수 num에 들어왔을 때,
첫 번째 3의 배수를 찾는 조건식에서 조건문은 종료된다.
15가 3의 배수이기 때문에 3으로 나누어 떨어져
'Hello'를 리턴하고 함수가 종료되기 때문이다.
그런 문제를 해결하기 위해서는 15배수의 조건식 위치를
제일 위로 바꿔야 한다.
먼저 15의 배수를 찾고, 15의 배수면 'Hello World'를 리턴하고,
15의 배수가 아니면 아래 두 번째 조건문으로 내려와 3의 배수인지를
평가한다. 이런식으로 위에서 아래로 읽어가며 평가를 하고 값을 반환한다.
따라서 올바른 식은 다음과 같다.

function helloworld(num){
	if(num % 15 === 0){
    	return 'HelloWorld';
    }else if(num % 3 === 0){
    	return 'Hello';
    }else if(num % 5 === 0){
    	return 'World';
    }else{
    	return 'Bye'
    }
}

이때 첫 번째 15의 배수 조건문은 다음과 같이 바꿔 쓸 수도 있다.

15로 나누어 떨어진다. 

if(num % 15 === 0){
    	return 'HelloWorld';
}   

===
3으로도 나누어 떨어지고, 5로도 나누어 떨어진다.

if(num % 3 === 0 && num % 5 === 0){
		return 'HellpWordl';
}  
profile
developerpyk

0개의 댓글