if else 개념이 아직 헷갈리는 것 같아서 심화문제를 더 풀어봤다
풀이 및 해설은 아래 참고!
문제 1
Q1. 철수는 369게임을 더럽게 못한다
실제 369게임 말고 약간 쉽게 각색해서 '3의 배수에서' 박수를 치면 되는 게임을 하고 있다
근데 철수가 수학에 좀 약한 친구라.... 숫자가 3의 배수인지 파악하기 힘든 관계로
프로그래밍으로 이 문제를 해결하려고 한다
어떤 숫자를 함수 안에 집어넣으면 박수를 쳐야할지 말아야할지 판단해주는 함수를 만들어보자!
풀이
- 내친김에 369 게임기를 만들어봤다 ㅋㅋ (디자인은..따로 안함)
- 3의 배수를 입력하면 박수를 쳐주고, 아닌 경우엔 실패했다는 문구가 나온다 (3의 배수는 3으로 나눴을 때 나머지가 0인 것)
<input type="number" id="삼육구">
<button type="submit" id="버튼">Play</button>
<script>
document.getElementById('버튼').addEventListener('click', function(){
if (document.getElementById('삼육구').value % 3 == 0) {
alert('👏');
} else {
alert('You Lose');
}
});
</script>
해답
- 해답에서는 간단하게 함수만 만들어서 콘솔로그로 출력했다
function 삼육구게임(num){
if (num % 3 == 0) {
console.log("박수");
} else {
console.log('통과');
}
}
삼육구게임(15);
// 박수 가 출력됨
문제 2
Q2. 하지만 369게임 업그레이드 버전 등장!
369게임 업그레이드 버전은 3의 배수에서 박수를 치는건 맞지만
9의 배수에서는 박수를 두번 쳐야한다
철수는 역시나 이것도 프로그래밍으로 이 문제를 해결하려고 한다 (오히려 천재일지도?)
아까 만들었던 369게임() 함수를 어떻게 고치면 될까?
참고) 함수이름 작명시 맨 처음 단어는 숫자를 사용하면 안됨
참고2) 페이지 내의 다른 곳에서 자바스크립트 문법 에러가 뜨는 경우 다른 코드도 실행이 제대로 되지 않음
풀이
- 아까의 369 게임기에서 9의 배수일 경우 박수를 두 번 치도록 했다 (9의 배수는 9로 나눴을 때 나머지가 0인 것)
- 3의 배수는 9의 배수에 포함되므로, 9의 배수 조건문을 먼저 if 문으로 작성하고 3의 배수 조건문은 else if 로 작성했다.
<input type="number" id="삼육구">
<button type="submit" id="버튼">Play</button>
<script>
document.getElementById('버튼').addEventListener('click', function(){
if (document.getElementById('삼육구').value % 9 == 0) {
alert('👏👏');
}
else if (document.getElementById('삼육구').value % 3 == 0) {
alert('👏');
} else {
alert('You Lose');
}
});
</script>
해답이 function 함수로 간단하게 작성되어있던 게 생각나서.. 그 버전으로도 써본다
function 삼육구게임(num){
if (num % 9 == 0) {
console.log("박수x2");
} else if (num % 3 == 0) {
console.log("박수");
} else {
console.log('통과');
}
}
삼육구게임(18);
// 박수x2 가 출력됨
해답
해답은 .. 바로 위에서 작성한 거랑 일치하므로 따로 작성하지 않겠음!
문제 3
Q3. 공인중개사 시험점수를 입력하면 합격인지 알려주는 함수를 만들어보자
공인중개사 1차 시험은 개론, 민법 2개 과목이 있다
과목마다 100점 만점이지만 두 과목 합해서 120점 이상이면 합격시켜준다
다만 한 과목이 40점 미만이면 과락으로 불합격된다
과목 점수 2개를 파라미터로 입력하면 합격인지 불합격인지 여부를 콘솔창에 출력하는 함수를 만들어보자
풀이
- 개론이 40점 미만이거나 (or) 민법이 40점 미만인 경우에 불합격을 주었다
- 이 경우 둘 중에 하나만 과락이거나 둘 다 과락이어도 불합격이다
- 그리고 이 외에 개론 + 민법 점수가 120점 이상인 경우에는 합격을 주었다
- 위 조건에 해당하지 않는 경우에는 모두 불합격이다
<input type="number" id="개론" placeholder="개론">
<input type="number" id="민법" placeholder="민법">
<button type="submit" id="버튼">View</button>
<script>
document.getElementById('버튼').addEventListener('click', function(){
if ( document.getElementById('개론').value < 40 ||
document.getElementById('민법').value < 40 ) {
alert('불합격');
} else if (document.getElementById('개론').value +
document.getElementById('민법').value >= 120 ) {
alert('합격');
} else {
alert('불합격');
}
});
</script>
이전 문제와 같이 해답과 동일한 형식으로도 풀이해보았다
function 합격조회(a, b){
if (a < 40 || b < 40) {
console.log("불합격");
} else if (a+b >= 120) {
console.log("합격");
} else {
console.log('불합격');
}
}
합격조회(80, 40);
// 합격 이 출력됨
해답
이것도 해답이 완전히 똑같아서 패스!
'Web > JavaScript' 카테고리의 다른 글
[JS] setTimeout, setInterval 로 타이머⏰ 만들기 (0) | 2022.11.02 |
---|---|
[JS] 폼 만들며 배워보는 if else 🧐 (1) | 2022.10.19 |
[JS] 말로만 듣던 jQuery 👀 간단 정리 (1) | 2022.10.05 |
[JS] 서브메뉴를 만들자! classList 🗂 다루기 (2) | 2022.10.04 |
[JS] 이벤트리스너: 들을게 👂 (2) | 2022.10.04 |