오늘은 모던 자바스크립트 프로그래밍의 정석 책에 나온 155, 156쪽의 함수에 관한 마무리 문제들을 풀어보겠습니다!!
양수, 음수 판단하여 창에 보여주기 (마무리 문제_1)
사용자가 프롬프트 창에 숫자를 입력했을 때 그 숫자를 함수로 넘겨주고, 함수에서는 숫자가 양수인지, 음수인지, 또는 0인지 판단해서 알림 창에 보여주는 프로그램을 작성해보세요.
✍️길라잡이
- 숫자를 받아서 양수, 음수, 0을 판단하고 알림 창에 표시하는 함수를 선언합니다.
- parseInt ( ) 함수를 사용해 프롬프트 창에 입력한 내용을 숫자로 변환합니다. (프롬프트 창에 입력한 내용이 숫자가 아니면 parseInt( )함수는 NaN을 반환합니다.
- 반환값이 숫자일 경우에만 함수를 실행합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>자바스크립트 함수 마무리 문제 1</title>
</head>
<body>
<h3>양수, 음수, 0인지 판단하는 프로그램</h3>
<script>
const num = parseInt(prompt("숫자를 입력해주세요"));
if(num>0) {
alert("양수입니다.");
} else if(num<0) {
alert("음수입니다.");
} else {
alert("NaN");
}
</script>
</body>
</html>
풀이
여기서 parseInt 함수가 무엇인지 몰라서 알아보았습니다.
parseInt() 함수를 사용하는 주요 목적은 문자열에서 숫자를 추출하기 위함입니다.
이 함수는 입력받은 문자열을 실제 숫자값으로 바꾸어 반환합니다.
상수 num을 선언하고 parseInt함수를 사용해 값을 받아 숫자로 바꿔줍니다. 그리고, prompt를 이용해 실행 창을 출력시킵니다. 다음엔 양수인지 음수인지 판별하기 위해 if else문을 이용해 양수일 때, 음수일 때, 값이 없을 때 상황을 나누어 출력시켜줍니다.
💫결과
두 수의 최대 공약수 구하기 (마무리 문제_2)
2개의 숫자를 입력받아 두 수의 최대공약수를 구하는 함수를 작성하고 테스트 해봅시다. 예를 들어 4와 12의 최대공약수는 4가 됩니다. 즉, 두 수 모두 나누어 떨어지는 수 중에서 가장 큰 값이 최대공약수입니다.
✍️길라잡이
- 주어진 두 수 중에서 어떤 수가 큰 수인지 확인합니다.
- 두 수가 모두 나누어떨어져야 하므로 두 수 중에서 큰 수까지 반복하면서 작은 수도 나누어떨어지고, 큰 수도 나누어 떨어지는 숫자를 찾습니다.
- 찾을 때마다 변수에 할당합니다. 반복이 모두 끝나면 변수에는 가장 마지막에 할당된 약수만 남습니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>최대공약수 구하기</title>
</head>
<body>
<script>
function getGCD(x, y) {
let max = x > y ? x : y;
let GCD = 0;
for (let i = 1; i <= max; i++) {
if (x % i === 0 && y % i === 0) {
GCD = i; // 최대공약수
}
}
return GCD;
}
document.write(`30과 12의 최대공약수 : ${getGCD(30, 12)}`);
document.write("<br>");
document.write(`84과 238의 최대공약수 : ${getGCD(84, 238)}`);
</script>
</body>
</html>
풀이
먼저 함수 getGCD를 매개변수 x, y로 지정합니다. 주어진 두 수 중에 어떤 것이 큰지 비교해야하기 때문에 삼항연산자를 이용해 조건식을 만들고, 실행문을 만들어 변수max를 지정해줍니다. GCD를 0으로 지정해주고 for문을 이용해 변수 i가 max값보다 작거나 같아질때까지 반복합니다. 그리고 if문을 이용해 x, y값을 나누었을 때 나머지가 0이라는 조건을 걸어 둘 다 충족하는 값을 GCD로 받습니다. 그 조건에 충족되는 값이 나올때까지 return문을 반복합니다. 그리고 출력시켜 두 수의 최대공약수를 구해줍니다.
💫결과