QUOTE THE DAY
“ 당신이 6개월 이상 한 번도 보지 않은 코드는 다른 사람이 다시 만드는 게 훨씬 더 나을 수 있다. ”
-
이글슨 (Eagleson)
반응형
자바스크립트 마무리 문제
모던 자바스크립트 프로그래밍의 정석 155,156 페이지 마무리 문제를 풀어보자!
마무리 문제 1
사용자가 프롬프트 창에 숫자를 입력했을 때 그 숫자를 함수로 넘겨주고,
함수에서는 숫자가 양수인지, 음수인지, 또는 0인지 판단해서 알림 창에 보여 주는 프로그램을 작성해 보세요.
let num = parseInt(prompt("숫자를 입력하세요."));
function func(num){
if(num>0){
document.write(num + "은(는) 양수입니다.");
} else if(num<0){
document.write(num + "은(는) 음수입니다.");
} else {
document.write(num + "0입니다.");
};
};
if(!isNaN(num)){
func(num);
}
- parseInt( )함수를 변수로 저장한다.
- prompt를 사용하여 사용자에게 숫자를 입력받는다.
- function 함수를 이용해 입력받은 숫자가 조건식에 맞는지 if else문을 사용하여 확인한다.
- num이 0보다 크면 "num은 양수입니다.", num이 0보다 작으면 "num은 음수입니다.", num이 NaN인 경우에는 "num은 0입니다." 라는 실행문을 출력합니다.
길라잡이
- 숫자를 받아서 양수, 음수, 0을 판단하고 알림 창에 표시하는 함수를 선언합니다.
- parseInt() 함수를 사용해 프롬프트 창에 입력한 내용을 숫자로 변환합니다. (프롬프트 창에 입력한 내용이 숫자가 아니면 parseInt() 함수는 NaN을 반환합니다.)
- 반환값이 숫자일 경우에만 함수를 실행합니다.
parseInt()
parseInt 함수는 첫 번째 인자를 문자열로 변환하고, 그 값을 파싱하여 정수나 NaN 을 반환합니다.
NaN 을 반환할 것이 아니면, parseInt 는 첫 번째 인자를 지정한 radix 진수로 표현한 정수를 반환합니다.
NaN
자바스크립트에서 NaN은 Not-a-Number를 뜻하는데 결과 값이 숫자가 아니라는 뜻입니다.
숫자를 계산할 경우 중간에 문자나 숫자 아닌 값이 들어가서 결과가 꼬였을 경우에 주로 발생하게 됩니다.
따라서 NaN을 방지하기 위해서는 출력 전에 값이 NaN인지 확인을 해야 하는데
특정 값이 NaN인지 체크하는 방법은 isNaN(값); 을 해주면 NaN일 경우 true 아닐 경우 false가 떨어집니다.
마무리 문제 2
2개의 숫자를 입력받아 두 수의 최대공약수를 구하는 함수를 작성하고 테스트해 보세요.
예를 들어 4와 12의 최대공약수는 4가 됩니다. 즉, 두 수 모두 나누어떨어지는 수 중에서 가장 큰 값이 최대 공약수입니다.
function getGCD(num1,num2){
let max = num1 > num2 ? num1 : num2;
let GCD = 0;
for(let i=1; i<=max; i++){
if(num1 % i === 0 && num2 % i === 0){
GCD = i;
}
}
return GCD;
}
document.write(`308과 20의 최대공약수 : ${getGCD(308, 20)}`);
document.write("<br>");
document.write(`45와 38의 최대공약수 : ${getGCD(45, 38)}`);
// 결과
// 308과 20의 최대공약수 : 4
// 45와 38의 최대공약수 : 1
- 함수 getGCD를 만들고 매개변수 num1,num2를 넣어줍니다.
- 삼항 연산자를 사용하여 num1,num2의 조건식을 만들어 줍니다.
- 실행문을 만들어주고 값을 변수(max)를 지정해줍니다.
- GCD를 0으로 지정하여줍니다.
- for문을 사용해서 i가 max 값보다 작거나 같아질 때까지 반복합니다.
- if문을 이용해 num1을 i로 나눈 나머지가 0이고 num2를 i로 나눈 나머지가 0이면 GCD안에 i값을 넣어줍니다.
- 조건에 충족되는 값이 나올때까지 return문을 반복합니다.
길라잡이
- 주어진 두 수 중에서 어떤 수가 큰 수인지 확인합니다.
- 두 수가 모두 나누어떨어져야 하므로 두 수 중에서 큰 수까지 반복하면서 작은 수도 나누어떨어지고,큰 수도 나누어 떨어지는 숫자를 찾습니다.
- 찾을 때마다 변수에 할당합니다. 반복이 모두 끝나면 변수에는 가장 마지막에 할당된 약수만 남습니다.
최대 공약수
- 최대공약수는 두 수 A와 B의 공통된 약수 중에 가장 큰 정수이다.
- 최대공약수를 구하는 가장 쉬운 방법은 2부터 min(A, B)까지 모든 정수로 나누어보는 방법이다.
반응형