무려 삼일동안 고심하면서 진행한 조건문 퀴즈 풀이 및 복습을 정리해보려 한다.
혹시 누군가가 보다가 더 좋은 코드를 알고 있다면 댓글로 남겨주시면 감사하겠습니다.
참고로, 구문은 굳이 작성하지 않는다.
일종의 답안지가 될 수 있기에 현재 공부중인 codestates 수강생분들에게 피해를 입힐까 두려워 적지 않는다.
단지 방향만 보여줄 뿐이다.
1.
코플릿 처음을 맞이해주는 문제.
처음 풀때는 읭?? 하면서 풀었던 문제다.
이 문제의 앞 머릿말을 보면 0. 조건문
이라고 적혀있는 것을 명심해야 한다.
조건문으로 작성해야 한다.
화면에는 아래와 같은 글씨들이 나열되어 있다
function isOldEnoughToDrink(age) {
}
isOldEnoughToDrink라는 함수를 만들어야 하는 것이다.
이 함수 안에 조건문을 작성하라는 문제이다.
우리가 해결해야 되는 과제는 누군가의 나이가 (미국 기준으로) 성인인지 아닌지
판단하는 것이다.
그 판단의 과정을 자바스크립트로 함수 안에 작성하면 된다.
첫번째로 age라는 매개변수(값이 변할 수 있는 변수)에 성년 이상
이라는 제한을 걸어줘야 하고
두번째로 그 매개변수로 조건문 if
를 작성하면 된다.
한글로 쓰자면
만약, (age가 21세 이상이라면) {
술을 마셔도 좋다는 true를 답해줘
} 그렇지 않다면 {
아니라고 답 해줘
}
라고 작성하면 된다.
2.
문자열을 return값에 넘겨줄 수 있는가의 문제다.
문자열은 ''안에 담겨야 하고, 이 둘을 하나의 console.log에 출력할 수 있어야 한다.
매개변수를 제외한 문자열을 정확히 쓰는게 좋다.
function checkAge(name, age) {
if (age >= 21) {
}
}
3.
비교연산자에 대한 정확한 개념을 이해했는지에 대한 문제다.
매개변수 num과 10에 대한 비교연산자를 알맞게 쓰면 된다.
비교연산자는 boolean
형태로 반환되어야 한다.
=
의 갯수에 따라 의미는 달라지니 유의하기 바란다.
=
: 값을 할당한다라는 의미이다. 주로 어떤 변수를 선언한 후에 값을 저장할 때 사용한다.
let character = '크리스'
==
: 비교연산자이며 어느 값을 비교할 때 사용한다.
이 같은 경우에는 피연산자의 타입까지 비교하지 않기 때문에 정확한 값을 비교할 때 사용하지 않는걸 추천한다.
예를 들어 문자열 '7'과 숫자 7이 같다고 나온다.
===
: 비교연산자이며 피연산자의 타입까지 비교한다.
앞서 예를 들었던 문자열 '7'과 숫자 7은 ===
연산자에서는 같지 않다고 나온다.
그렇기 때문에 비교연산자로 사용할 때 많이 사용한다.
true or false
를 사용하지 않는 이유는 비교연산자 값을 boolean
형태로 주기 때문이다.
코드는 정답이 될 수 있기에 역시 작성을 안한다.
4.
앞서 했던 것과 같은 비교 연산자 문제이다.
앞서 3번의 문제의 답처럼 간단하게도 풀수 있지만, 이 문제의 의도는 if문을 활용하여 푸는게 문제 의도에 맞다.
function isGreaterThan(num1, num2) {
if(num2>num1) {
} else {
}
}
5.
비교연산자와 나머지연산자, if문 총 3개를 활용하는 문제이다.
짝수라는 것을 알기 위해서는 나머지가 0이라는 것을 적용시키면 된다.
if (num % 2 === 0)
힌트는 여기까지이다.
6.
문제가 10보다 크고 짝수인지 반환해야 한다고 나와있으며, 힌트로 AND연산자 &&
를 쓰거나 if
문을 중첩하라고 나와있다.
&&
연산자를 사용할 경우 if
문 하나로 가능하다.
7.
점수에 대응하는 등급을 문자열로 반환하는 문제이다.
또한 점수가 100을 초과하거나 0 미만일 경우 문자열 INVALID SCORE
라는 문자열을 반환하면 된다.
보통 이 경우 if
문을 여러개 사용하면 되지만, if
문과 else if
문을 사용하면 쉽게 풀리게 된다.
8.
이 문제가 사실 많은 사람들의 답이 여러가지 형태로 나뉘게 된다.
어떤 사람은 함수를 두개로 사용하여 문제를 해결하는가 하면, 어떤 사람은 함수를 한개로 사용하여 문제를 해결한다.
이 문제에 핵심키워드는 다음과 같다.
Notes:
위에서 말한것처럼 함수를 두개로 사용하여 문제를 해결한 사람은 다음과 같이 풀이하였다.
funtion sign(unit) {
// 1의 자리가 8 혹은 9일 경우
// 1의 자리가 0 부터 2 사이일 경우
}
이렇게 1의 자리를 검사하는 함수를 하나 작성한 후
미리 작성되어 있는 함수에서 호출해주면 된다.
두번째로 함수를 한개로 사용하여 문제를 해결한 사람은 다음과 같이 풀이하였다.
이렇게 1의 자리를 검사해서 등급을 붙이는 것을 제일 마지막에 해야 등급이 학점 뒤에 붙는다.
참고 코드이다
if (String(score)[1] <= 2) {grade += '-';}
else if (String(score)[1] >= 8) {grade += '+';}
9.
특이한 문제이다.
or
함수를 작성하라는데 ||
연산자를 사용하지 말고 대신 !
연산자와 &&
연산자를 사용해서 작성하라고 한다.
힌트는 다음과 같다.
if
문 사용시 expression1
앞에 !
를 붙여서 사용하면 문제의 의도와 맞는 답안을 작성할 수 있다.
10.
이 문제의 핵심 키워드는 다음과 같다.
이 두가지 조건을 만족해야만 true
를 반환해야 한다.
힌트는 if
문을 중첩해야 한다는거, 하나는 ||
연산자와 &&
연산자를 중첩사용해야 한다는 것이다.