CodeStates / 조건문 01번 부터 10번까지

WeWorship TV·2020년 6월 30일
0

조건문 코플릿

무려 삼일동안 고심하면서 진행한 조건문 퀴즈 풀이 및 복습을 정리해보려 한다.
혹시 누군가가 보다가 더 좋은 코드를 알고 있다면 댓글로 남겨주시면 감사하겠습니다.

참고로, 구문은 굳이 작성하지 않는다.
일종의 답안지가 될 수 있기에 현재 공부중인 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:

  • (100 - 90) --> 'A'
  • (89 - 80) --> 'B'
  • (79 - 70) --> 'C'
  • (69 - 60) --> 'D'
  • (59 - 0) --> 'F'
  • 만약 주어진 점수가 100을 초과하거나 0 미만이라면 INVALID SCORE 를 반환해야 합니다.
  • 만약 점수의 1의 자리가 0~2 사이라면 등급과 함께 '-'를 반환해야 합니다.
  • 만약 점수의 1의 자리가 8~9 사이라면 등급과 함께 '+'를 반환해야 합니다.
  • F+ 와 F- 는 존재하지 않습니다.

위에서 말한것처럼 함수를 두개로 사용하여 문제를 해결한 사람은 다음과 같이 풀이하였다.

funtion sign(unit) {
  // 1의 자리가 8 혹은 9일 경우
  
  // 1의 자리가 0 부터 2 사이일 경우
}

이렇게 1의 자리를 검사하는 함수를 하나 작성한 후
미리 작성되어 있는 함수에서 호출해주면 된다.

두번째로 함수를 한개로 사용하여 문제를 해결한 사람은 다음과 같이 풀이하였다.

  • 모든 학점은 grade라는 변수로 둔다.
  • 점수에 맞게 학점 변수도 변경한다.
  • 특이사항인 100점과 F는 등급과 부딪히지 않게 따로 리턴 값으로 둔다.
  • 매개변수의 두 번째 숫자를 문자열로 전환하여 빼내서 1의 자리 숫자를 구한다.
  • 1의 자리 숫자의 등급을 나누어 grade의 뒤에 붙인다.

이렇게 1의 자리를 검사해서 등급을 붙이는 것을 제일 마지막에 해야 등급이 학점 뒤에 붙는다.

참고 코드이다

if (String(score)[1] <= 2) {grade += '-';}
else if (String(score)[1] >= 8) {grade += '+';}

9.
특이한 문제이다.
or함수를 작성하라는데 ||연산자를 사용하지 말고 대신 ! 연산자와 &&연산자를 사용해서 작성하라고 한다.

힌트는 다음과 같다.
if문 사용시 expression1 앞에 !를 붙여서 사용하면 문제의 의도와 맞는 답안을 작성할 수 있다.

10.
이 문제의 핵심 키워드는 다음과 같다.

  • 두 숫자 중 적어도 하나가 짝수인지, 그리고 두 숫자 모두 9보다 작은지를 확인합니다.

이 두가지 조건을 만족해야만 true를 반환해야 한다.

힌트는 if문을 중첩해야 한다는거, 하나는 ||연산자와 &&연산자를 중첩사용해야 한다는 것이다.

profile
자 이제 시작이야 내 꿈을

0개의 댓글