<aside> 💡 기록하는 기준

  1. 오답
  2. 레퍼런스와 비교 시 비효율적일 때
  3. 겨우 풀었을 때
  4. 모르는 개념을 찾아봤을 때
  5. 단원 내용을 적용하지 못했을 때

</aside>

<aside> 💡 유의

  1. el in arr 은 없다 : arr.includes(el)로 불리언을 받아야 한다

</aside>

변수와 자료형

문제
문자열을 인자로 받아서 느낌표를 붙여서 리턴해주는 함수 returnWordWithJoy가 있습니다. 
함수 returnWordWithJoy의 첫 번째 인자로 문자열 "I love coding"을 넣어서 호출하고, 
그 결과값을 변수 word에 할당하세요.

// 문자열을 인자로 받아서 느낌표를 붙여서 리턴 해주는 함수 returnWordWithJoy가 있습니다.
// 함수 returnWordWithJoy의 첫 번째 인자로 문자열 "I love coding"을 넣어서 호출하고, 그 결과값을 변수 word에 할당하세요.
let word; // TODO

// 아래 코드는 변경하지 마세요
function returnWordWithJoy(word) {
  if (typeof word !== 'string') {
    return 'wrong type';
  } else {
    return word + '!';
  }
}

word = returnWordWithJoy('I love coding');

word = returnWordWithJoy('I love coding') 는 이미 word를 선언한 형태

키워드를 활용하지 않고 선언된 변수는 전역변수로 활용이 되는데요. 이를 선언되지 않은 변수라고도 부릅니다.현재 단계에서 이 부분은 차근히 알아가시는게 좋고 현재 변수 선언을 하실 때는 let과 const를 꼭 활용하셔서 선언해주세요!도움되실 수 있는 [ 레퍼런스 ] 도 남겨드립니다.

조건문 : 7,9,13,14

7. FizzBuzz

문제
수를 입력받아 3 그리고 5로 각각 나눈 뒤 나머지 값에 따라 알맞은 메시지를 리턴해야 합니다.

입력
인자 1 : num
number 타입의 정수 (num >= 1)

출력
string 타입을 리턴해야 합니다.
3으로 나누어 떨어지는 경우, 'Fizz'를 리턴해야 합니다.
5으로 나누어 떨어지는 경우, 'Buzz'를 리턴해야 합니다.
3과 5로 모두 나누어 떨어지는 경우, 'FizzBuzz'를 리턴해야 합니다.
3이나 5로 나누어 떨어지지 않는 경우, 'No FizzBuzz'를 리턴해야 합니다.

입출력 예시
let output = fizzBuzz(3);
console.log(output); // --> 'Fizz'

output = fizzBuzz(5);
console.log(output); // --> 'Buzz'

output = fizzBuzz(15);
console.log(output); // --> 'FizzBuzz' 

output = fizzBuzz(7);
console.log(output); // --> 'No FizzBuzz'

풀이
1. 문제 분석 
집합 3의 배수 : Fizz (3의 배수 - 15의 배수) 
집합 5의 배수 : Buzz  (5의 배수 - 15의 배수) 
집합 15의 배수 : FizzBuzz 
이외: No FizzBuzz (3의 배수, 5의 배수 제외)

function fizzBuzz(num) {
  // TODO: 여기에 코드를 작성합니다.
 //가장 까다로운 조건을 먼저 거른다 
if(num % 3===0 && num%5===0){ 
	return "FizzBuzz"
}else if(num %3===0){ 
	return "Fizz"
}else if(num%5===0){ 
	return "Buzz"
}else{
	return "No FizzBuzz"
} 

9. daysInMonth

문제
특정 달(month)을 입력받아 각 달에 몇 일이 있는지 리턴해야 합니다.

입력
인자 1 : month
number 타입의 정수 (1 <= month && month <= 12)

출력
number 타입을 리턴해야 합니다.
주의 사항
월 예시) 1월은 1, 2월은 2... 12월은 12입니다.
7월과 8월에는 모두 31일이 존재합니다.
2월 29일은 존재하지 않는다고 가정합니다.

입출력 예시
let output = daysInMonth(1);
console.log(output); // --> 31

output = daysInMonth(5);
console.log(output); // --> 31

output = daysInMonth(2);
console.log(output); // --> 28
내 풀이
function daysInMonth(month) {
  // TODO: 여기에 코드를 작성합니다.
  // 1,3,5,7,8,10,12
  //4,6,9,11
  //2 
  if(month === 1 ||month === 3||month === 5||month === 7||month === 8||month === 10||month ===12){
    return 31
  }else if(month === 4 || month === 6 || month === 9 || month === 11){ 
    return 30
  }else if(month === 2){ 
    return 28
  }else return undefined
}
레퍼런스 
function daysInMonth(month) {
  if (month === 2) {
    return 28;
  } else if (month === 4 || month === 6 || month === 9 || month === 11) {
    return 30;
  } else { 
    return 31;
  }
}
//**"나머지" 최대한 활용하기**

13. convertScoreToGradeWithPlusAndMinus


문제
점수를 입력받아 점수에 해당하는 등급을 리턴해야 합니다.

입력
인자 1 : score
number 타입의 정수
출력
string 타입을 리턴해야 합니다.
각 등급의 최저 점수는 아래와 같습니다. ('F'의 경우 최대 점수를 표기)
90 이상 --> 'A'
80 이상 --> 'B'
70 이상 --> 'C'
60 이상 --> 'D'
60 미만 --> 'F'
주의 사항
만약 주어진 점수가 100을 초과하거나 0 미만인 경우, 문자열 'INVALID SCORE'를 리턴해야 합니다.
각 등급의 최고 점수보다 7점 이하인 경우, 등급과 함께 '-'를 리턴해야 합니다. (단, 93점의 경우에는 A를 리턴해야 합니다.)
각 등급의 최저 점수보다 8점 이상인 경우, 등급과 함께 '+'를 리턴해야 합니다.
F+ 와 F- 는 존재하지 않습니다.
입출력 예시
let output = convertScoreToGradeWithPlusAndMinus(91);
console.log(output); // --> 'A-'

내 풀이 : if, if, if, else를 쓰면 마지막 if에 대한 else가 된다 ⇒ 앞의 if들을 제외한 else를 쓰기 위해서는 else if로 전체를 써야한다

레퍼런스

function plusOrMinus(score) {
  const extra = score % 10;
  if (extra <= 2) {
    return '-';
  } else if (extra >= 8) {
    return '+';
  } else {
    return '';
  }
}

function convertScoreToGradeWithPlusAndMinus(score) {
  let grade;
  if (score > 100 || score < 0) {
    return 'INVALID SCORE';
  }
  if (score === 100) {
    return 'A+';
  }
  if (score >= 90) {
    grade = 'A';
  } else if (score >= 80) {
    grade = 'B';
  } else if (score >= 70) {
    grade = 'C';
  } else if (score >= 60) {
    grade = 'D';
  } else if (score >= 0) {
    grade = 'F';
  }

  if (grade !== 'F') {
    grade = grade + plusOrMinus(score);
  }
  return grade;
}

14. isPythagorean